text:
{#
   This file is part of the Exposure package.

   Copyright 2013 by Sébastien Pujadas

   For the full copyright and licence information, please view the LICENCE
   file that was distributed with this source code.
#}

			{% if notification.status == constant('\\Exposure\\Model\\Notification::STATUS_UNREAD') %}

			{% elseif notification.status == constant('\\Exposure\\Model\\Notification::STATUS_ARCHIVED') %}

			{% else %}

			{% endif %}
			{% if notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_THEME_SUGGESTION') %}
				Theme suggestion (not implemented)
			{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_MODERATION') %}
				Project moderation: {{notification.project.name}}
			{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROFILE_MODERATION') %}
				Profile moderation
			{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_WANT') %}
				Project wanted by sponsor
			{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_SPONSOR_CONTRIBUTION') %}
				Contribution
			{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_SPONSOR_RETURN') %}
				Return
			{% endif %}

			{% if notification.status == constant('\\Exposure\\Model\\Notification::STATUS_UNREAD') %}
				unread
			{% endif %}

			{% if notification.status == constant('\\Exposure\\Model\\Notification::STATUS_UNREAD') %}
				Mark as read
			{% endif %}
			{% if notification.status != constant('\\Exposure\\Model\\Notification::STATUS_ARCHIVED') %}
				Archive
			{% endif %}
			Delete

			{{notification.dateTime|date('d/m/Y G:i')}}

	{% if notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_THEME_SUGGESTION') %}

(not implemented)

	{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_MODERATION') %}
		{% if notification.event == constant('\\Exposure\\Model\\ProjectModerationNotification::EVENT_APPROVED_PROJECT') %}

Project is approved

		{% elseif notification.event == constant('\\Exposure\\Model\\ProjectModerationNotification::EVENT_FLAGGED_PROJECT') %}

Project is flagged as inappropriate

		{% elseif notification.event == constant('\\Exposure\\Model\\ProjectModerationNotification::EVENT_REFUSED_PROJECT') %}

Project is rejected

		{% elseif notification.event == constant('\\Exposure\\Model\\ProjectModerationNotification::EVENT_PROJECT_NEEDS_EDITING') %}

Project needs editing

			{% if notification.content is not empty %}

Comment from {{appName}} — {{notification.content}}

			{% endif %}

Edit your project

		{% endif %}

	{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROFILE_MODERATION') %}
		{% if notification.event == constant('\\Exposure\\Model\\ProfileModerationNotification::EVENT_APPROVED_PROFILE') %}

Profile is approved

		{% elseif notification.event == constant('\\Exposure\\Model\\ProfileModerationNotification::EVENT_REFUSED_PROFILE') %}

Profile is refused

		{% elseif notification.event == constant('\\Exposure\\Model\\ProfileModerationNotification::EVENT_PROFILE_NEEDS_EDITING') %}

Profile needs editing

		{% if notification.content is not empty %}

Comment from {{appName}} — {{notification.content}}

		{% endif %}

Edit your profile

		{% endif %}

	{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_PROJECT_WANT') %}
		{% set canSeeSponsorOrganisation = user.canSeeSponsorOrganisation(notification.want.sponsorOrganisation) %}

{% if canSeeSponsorOrganisation %}{{notification.want.sponsorOrganisation.name}}, a{% else %}A{% endif %} sponsor from the "{{notification.want.sponsorOrganisation.businessSector.name.stringByLanguageCode(session.language)}}" business sector{% if canSeeSponsorOrganisation %}, {% endif %} wants to sponsor project {{project.name}}

	{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_SPONSOR_CONTRIBUTION') %}
		{% if notification.event == constant('\\Exposure\\Model\\SponsorContributionNotification::EVENT_PROPOSAL_SUBMITTED_BY_SPONSOR') %}

			{{notification.contribution.contributor.name}}
			wants to
			contribute
			to project
			{{notification.contribution.project.name}}

		{% elseif notification.event == constant('\\Exposure\\Model\\SponsorContributionNotification::EVENT_PROPOSAL_APPROVED') %}

			Proposal to
			contribute to project
			{{notification.contribution.project.name}}
			by
			{{notification.contribution.contributor.name}}
			is approved

		{% elseif notification.event == constant('\\Exposure\\Model\\SponsorContributionNotification::EVENT_CONTRIBUTION_SENT') %}

			A contribution to project
			{{notification.contribution.project.name}}
			has been sent by
			{{notification.contribution.contributor.name}}

		{% elseif notification.event == constant('\\Exposure\\Model\\SponsorContributionNotification::EVENT_CONTRIBUTION_RECEIVED') %}

			A contribution to project
			{{notification.contribution.project.name}}
			by
			{{notification.contribution.contributor.name}}
			has been received

		{% endif %}

	{% elseif notification.type == constant('\\Exposure\\Model\\Notification::TYPE_SPONSOR_RETURN') %}
		{% if notification.event == constant('\\Exposure\\Model\\SponsorReturnNotification::EVENT_STARTED') %}

			The "{{notification.return.need.project.name}}" project team
			has started fulfilling
			its part
			of the exchange for
			{{notification.return.need.contribution.contributor.name}}

		{% elseif notification.event == constant('\\Exposure\\Model\\SponsorReturnNotification::EVENT_COMPLETED_BY_PROJECT') %}

			The "{{notification.return.need.project.name}}" project team
			has completed
			its part
			of the exchange for
			{{notification.return.need.contribution.contributor.name}}

		{% elseif notification.event == constant('\\Exposure\\Model\\SponsorReturnNotification::EVENT_APPROVED') %}

			{{notification.return.need.contribution.contributor.name}}
			have approved that the
			"{{notification.return.need.project.name}}"
			have completed their part
			of the exchange

		{% endif %}
	{% endif %}


text:
The steps described in this document are followed by the `bin/tester.sh` script.

## Functional

Functional tests can be run using the following command:

    vendor/bin/phpunit -c app

Functional tests will simply run a command and check its exit status.

## Specification

Specification tests can be run using the following command:

    vendor/bin/phpspec --config=app run

Specification tests describes how a class should behave. It's similar to unit
tests, but with self explicit names for test methods.

To generate the specification, use the following command:

    vendor/bin/phpspec --config=app desc 'Acme\DemoBundle\AcmeDemoBundle'

The `bin/descripter.sh` script helps you with that.

## Next readings

* [technical debt](05-technical-debt.md)
* [glossary](06-glossary.md)
* [architecture](07-architecture.md)

## Previous readings

* [introduction](01-introduction.md)
* [installation](02-installation.md)
* [usage](03-usage.md)

redpajama_set_name: RedPajamaGithub


text:
<?php

/*
 * Adminpanel Alto CMS [EN]
 */
return array(
    'title' => 'Admin panel',
    'menu_info' => 'Information',
    'menu_info_dashboard' => 'Panel',
    'menu_info_report' => 'Report',
    'menu_info_phpinfo' => 'Information about PHP',
    'menu_content' => 'Content',
    'menu_content_pages' => 'Pages',
    'menu_content_blogs' => 'Blogs',
    'menu_content_topics' => 'Articles',
    'menu_content_comments' => 'Comments',
    'menu_content_mresources' => 'Media resources',
    'menu_users' => 'Users',
    'menu_users_users' => 'All users',
    'menu_users_banlist' => 'Banlist',
    'menu_users_invites' => 'Invitations',
    'menu_settings' => 'Settings',
    'menu_settings_site' => 'Site settings',
    'menu_settings_lang' => 'Languages',
    'menu_settings_blogtypes' => 'Blogs\' types',
    'menu_settings_contenttypes' => 'Content\'s types',
    'menu_settings_userrights' => 'Users\' rights',
    'menu_settings_userfields' => 'Users\' fields',
    'menu_menu_manager' => 'Menu manager',
    'menu_site' => 'Site',
    'menu_site_skins' => 'Appearance',
    'menu_site_widgets' => 'Widgets',
    'menu_site_plugins' => 'Plugins',
    'menu_site_scripts' => 'Counts and scripts',
    'menu_logs' => 'Logs',
    'menu_logs_error' => 'System errors',
    'menu_logs_sqlerror' => 'SQL errors',
    'menu_logs_sqllog' => 'SQL requests',
    'menu_tools' => 'Tools',
    'menu_tools_reset' => 'Data reset',
    'menu_tools_commentstree' => 'Comments tree',
    'menu_tools_recalcfavourites' => 'Favourites counters',
    'menu_tools_recalcvotes' => 'Vote counters',
    'menu_tools_recalctopics' => 'Quantity of articles in blogs',
    'menu_tools_recalcblograting' => 'Recalculation of blogs\' rating',
    'menu_tools_checkdb' => 'DB Control',

    /***
     * DASHBOARD
     */
    'dashboard_updates_title' => 'Updates',
    'dashboard_news_title' => 'Alto CMS News',
    'dashboard_turn_title' => 'Console disabling ',
    'dashboard_turn_on_text' => 'If you don\'t want to receive information on Alto CMS news or about new versions of plugins, you can disable this function',
    'dashboard_turn_off_text' => 'You have disabled the function of receiving information on Alto CMS news.

  If you want to receive information on Alto CMS news or about new versions of plugins, you can enable this function',
    'dashboard_main' => 'Main',

    /***
     * common texts
     */
    'word_yes' => 'Yes',
    'word_no' => 'No',
    'include' => 'Add',
    'exclude' => 'Exclude',
    'delete' => 'Delete',
    'activate' => 'Activate',
    'deactivate' => 'Deactivate',
    'action_ok' => 'Command is executed',
    'action_err' => 'Command execution error',
    'no_data' => 'No data',
    'execute' => 'Execute',
    'menu_list' => 'List',
    'menu_options' => 'Options',
    'turn_on' => 'Turn on',
    'turn_off' => 'Turn off',
    'file_write_error' => 'Write error to file %%file%%',
    'file_not_found' => 'File %%file%% not found',
    'err_read' => 'Error of reading',
    'err_read_dir' => 'Error of folder reading',
    'err_read_file' => 'Error of file reading',
    'err_read_xml' => 'Error of reading XML-file %%file%%',
    'err_copy_file' => 'Error of copying file %%file%%',
    'err_open_zip_file' => 'Error of ZIP file reading',
    'err_extract_zip_file' => 'Error of the ZIP file unpacking',
    'goto_site' => 'Go to site',
    'need_upgrade' => ' ATTENTION!  You need to update the module by clicking the link below',
    'denied_title' => 'Access error',
    'denied_text' => 'You don\'t have access to this mode',
    'banned1_text' => 'The access to this site is closed for you until %%date%%',
    'banned2_text' => 'The access to this site is closed for you',
    'banned3_text' => 'The access to this site is closed for your IP address',
    'form_choose_file' => 'Choose the file',
    'form_no_file_selected' => 'The file isn\'t chosen',
    'menu_panel' => 'Admin panel
',
    'menu_params' => 'Parameters',
    'menu_statistics' => 'Statistics',
    'menu_plugins' => 'Plugins',
    'menu_delegates' => 'Delegation',

    /***
     * INFO & REPORTS
     */
    'info_versions' => 'Versions',
    'info_version_php' => 'PHP Version',
    'info_version_img' => 'Graphics',
    'info_version_smarty' => 'Smarty Version',
    'info_version_alto' => 'Alto CMS Version',
    'site_statistics' => 'Site statistics ',
    'site_stat_users' => 'Users',
    'site_stat_blogs' => 'Blogs',
    'site_stat_topics' => 'Topics',
    'site_stat_comments' => 'Comments',
    'site_info' => 'Site information ',
    'info_site_url' => 'Website URL',
    'info_site_skin' => 'Current skin',
    'info_site_jslib' => 'Javascript library used ',
    'info_site_client' => 'Web client',
    'button_report' => 'Create the report',
    'button_checkin' => 'Include into the report',

    /***
     * BLOGS
     */
    'blogs_title' => 'Blogs',
    'blogs_list' => 'List',
    'blogs_all_types' => 'All types',

    /***
     * TOPICS
     */
    'topics_title' => 'Topics',

    /***
     * COMMENTS
     */
    'comments_title' => 'Comments',

    /***
     * MRESOURCES
     */
    'mresources_title' => 'Media resources',
    'mresource_delete_confirm' => 'Do you want to deelete this media resource?',
    'mresource_will_be_delete' => 'Media resourse will be deleted. Do you want to continue?',
    'mresource_deleted' => 'Media resource is deleted.',
    'mresource_not_deleted' => 'Media resource not deleted.',

    /***
     * USERS
     */
    'users_title' => 'Users',
    'menu_users_profile' => 'User\'s profile',
    'menu_users_list' => 'List',
    'users_list' => 'Users',
    'admins_list' => 'Administrators',
    'users_date_reg' => 'Registration date',
    'users_ip_reg' => 'Registration IP ',
    'users_ip_last' => 'Latest IP',
    'users_activated' => 'Activated',
    'users_last_activity' => 'Last activity',
    'users_banned' => 'Banned',
    'users_activate' => 'Activate',
    'users_action' => 'Action',
    'user_login' => 'User\'s login',
    'user_email' => 'User\'s E-mail',
    'user_not_found' => 'The user %%user%% not found',
    'user_ip_addresses' => 'User\'s IP addresses',
    'user_ip' => 'User\'s IP',
    'user_filter_ip_notice' => 'E.g., 83.167.100.46 or 83.167.*.*',
    'user_filter_regdate_notice' => 'E.g., 2009-2 or 2009-3-31',
    'user_filter_email_notice' => 'Specify user\'s E-mail',
    'users_ban' => 'To Ban',
    'users_unban' => 'To Unban',
    'cannot_ban_self' => 'You can\'t ban yourself',
    'cannot_banned_admin' => 'A banned user can\'t be made administrator',
    'already_added' => 'This user is already the administrator',
    'cannot_ban_admin' => 'Administrator can\'t be banned',
    'cannot_with_admin' => 'Operation is impossible with the user admin',
    'user_delete' => 'Delete user',
    'users_delete' => 'Delete users',
    'users_del_warning' => 'ATTENTION!
 By deleting a user, you delete ALL his blogs, articles, comments, votes. Comments of other users written in reply to deleted comments can also be deleted',
    'users_del_confirm' => 'Confirm deleting',
    'cannot_del_self' => 'You can\'t delete yourself',
    'cannot_del_admin' => 'You can\'t delete the administrator ',
    'cannot_del_confirm' => 'You have not confirmed user\'s deleting ',
    'user_deleted' => 'User %%user%% deleted',
    'msg_sent_ok' => 'Message successfully sent',
    'seek_users' => 'Search for users',
    'selected_users' => 'Users chosen',
    'users_not_selected' => 'Users not chosen',
    'user_photo' => 'User\'s photo',
    'user_voted' => 'Voted',
    'user_voted_title' => 'User voted',
    'user_voted_users' => 'For users',
    'user_voted_topics' => 'For articles',
    'user_voted_blogs' => 'For blogs',
    'user_voted_comments' => 'For comments',
    'user_votes_title' => 'User got votes',
    'user_votes_users' => 'In user\'s profile',
    'user_votes_topics' => 'For user\'s articles',
    'user_votes_blogs' => 'For user\'s blogs',
    'user_votes_comments' => 'For user\'s comments',
    'user_wrote_topics' => 'Wrote articles',
    'user_wrote_comments' => 'Wrote comments',
    'comment_edit' => 'Edit comment',
    'user_add_dialog' => 'Add new user',
    'user_add_login' => 'User login',
    'user_add_mail' => 'User e-mail',
    'user_add_password' => 'Password',
    'user_add_setadmin' => 'Add user as administrator',
    'user_add_setadmin_alert' => 'Attention! User will be added as administrator',
    'all_users' => 'All users',
    'admins' => 'Administrators',
    'moderators' => 'Moderators',
    'include_moderator' => 'Add moderator',
    'exclude_moderator' => 'Delete moderator',

    /***
     * MENU
     */
    'menu_manager' => 'Menu Manager',
    'menu_manager_id' => 'Type',
    'menu_manager_description' => 'Description',
    'menu_manager_actions' => 'Actions',
    'menu_manager_edit' => 'Edit',
    'menu_manager_edit_menu' => 'Edit menu',
    'menu_manager_title' => 'Link text',
    'menu_manager_link' => 'Link address',
    'menu_manager_submenu' => 'Submenu',
    'menu_manager_no_items' => 'No menu items',
    'menu_manager_save_link_ok' => 'New link saved',
    'menu_manager_remove_link_ok' => 'Menu item deleted',
    'menu_manager_save_text_ok' => 'Menu item text saved',
    'menu_manager_edit_instruction' => 'To change order of menu items, move the rows in the table with the mouse',
    'menu_manager_edit_instruction_1' => 'To change link text or address, click necessary item',
    'menu_manager_edit_instruction_2' => 'To change order of menu items, move the rows in the table with the mouse',
    'menu_manager_remove' => 'Delete this menu item',
    'menu_manager_actions_add' => 'Add a new menu item',
    'menu_manager_actions_reset' => 'Reset menu to initial state',
    'menu_manager_item_title' => 'Link text',
    'menu_manager_item_link' => 'Link address',
    'menu_manager_item_place' => 'Location',
    'menu_manager_item_root' => 'Add as a root link',
    'menu_manager_as_submenu' => 'As submenu item',
    'menu_manager_actions_create' => 'Creation of a new menu item',
    'menu_manager_as_save' => 'Save',
    'menu_manager_item_add_error' => 'New item not added',
    'menu_manager_edit_submenu' => 'Edit submenu',
    'menu_manager_actions_remove_submenu' => 'Delete submenu',
    'menu_manager_change_display' => 'Change visibility',
    'menu_manager_display_link_ok' => 'Visibility element changed',
    'menu_manager_hook' => 'Hook menu place',
    'user_show_all' => 'Show all friends',
    'user_ban' => 'Banned',

    /***
     * INVITES
     */
    'invites_title' => 'Invitations',
    'invites_all' => 'All invitations',
    'invites_used' => 'Used',
    'invites_unused' => 'Not used',
    'invite_code' => 'Invitation code',
    'invite_user_from' => 'Sender',
    'invite_user_to' => 'Recipient',
    'invite_date_add' => 'Creation date',
    'invite_date_used' => 'Using date',
    'invite_listmail' => 'E-mail list for invitations',
    'invite_listmail_help' => 'Choose e-mail list to send invitations. One e-mail address per line',
    'invite_send_to_mail' => 'Send invitations via e-mail',
    'invite_need_number' => 'How many invitations do you need?',
    'invite_mode_mail' => 'Send invitations via e-mail',
    'invite_mode_text' => 'Generate and show invitations',
    'invite_submit' => 'Generate invitations',
    'invaite_mail_empty' => 'Choose at least one e-mail address',
    'invaite_text_empty' => 'You need at least one invitation',
    'invaite_mail_done' => '%%num%% new invitations sent',
    'invaite_mail_err' => '%%num%% incorrect addresses',
    'invaite_text_done' => '%%num%% new invitations created',

    /***
     * BANLIST
     */
    'banlist_title' => 'Ban list',
    'banlist_ids' => 'Users',
    'banlist_ips' => 'IP addresses',
    'banlist_add' => 'Add to banlist',
    'menu_users_fields' => 'Additional fields',
    'menu_additional' => 'Extra',
    'menu_db' => 'DB Control',
    'menu_additional_item' => 'Extra',
    'params_title' => 'Admin panel parameters',
    'param_items_per_page' => 'Number of lines on a page',
    'param_items_per_page_notice' => 'Number of lines displayed on a page in table lists (users, a ban lists, etc.)',
    'param_votes_per_page' => 'Number of last votings in a profile',
    'param_votes_per_page_notice' => 'Number of last votings displayed in the user\'s profile in each table - voting for other users, their articles, comments',
    'param_edit_footer' => 'Signature of  articles/comments edited',
    'param_edit_footer_notice' => 'Signature which will be automatically added during articles/comments editing  from Admin panel',
    'param_vote_value' => 'Value of administrator\'s vote',
    'param_vote_value_notice' => '"Intense voting" value, available in the user profile in Admin panel',
    'vote_error' => 'Administrator\'s voting error ',
    'repeat_vote_error' => 'Administrator\'s re voting error',
    'ban_period' => 'Ban term',
    'ban_upto' => 'Ban until',
    'ban_unlim' => 'Permanent ban',
    'ban_for' => 'Ban for',
    'ban_days' => 'days',
    'ban_comment' => 'Comment',
    'close_open_site' => 'Close/open site',
    'site_closed' => 'Site closed',
    'site_openned' => 'Site open',
    'close_site_notice' => 'You can block the site from visitors. Only administrators have access to the site in this mode.',
    'close_site_text_notice' => 'Specify the text which will be seen by visitors on the closed site',
    'close_site_file_notice' => 'Or enter the name of HTML-file to which visitors will be redirected (has to be in the root folder)',
    'close_site_text_empty' => 'Message cannot be empty',
    'close_site_file_empty' => 'File name cannot be empty',
    'seek' => 'Search',
    'save' => 'Save',
    'reset' => 'Reset',
    'cancel' => 'Cancel',
    'continue' => 'Continue',
    'saved_ok' => 'Data saved ',
    'saved_err' => 'Data save error',
    'err_wrong_ip' => 'Incorrect IP address',
    'config_err_read' => 'Error reading configuration file ',
    'config_err_backup' => 'Error creating backup file',
    'config_err_save' => 'Error saving configuration file',
    'config_save_ok' => 'Changed configuration file saved',
    'include_admin' => 'Add administrator',
    'exclude_admin' => 'Exclude administrator',
    'select_file' => 'Choose file',
    'send_copy_self' => 'Send copy to myself',
    'send_err_to_user' => 'Error sending message to user %% user %%',
    'send_common_message' => 'General message',
    'send_separate_messages' => 'Separate messages',
    'send_common_notice' => 'Users will receive general message and all other recipients will see any answer to it',
    'send_separate_notice' => 'Each user will receive separate personal message',

    /***
     * LOGS
     */
    'logs_errors_title' => 'Logs: system errors',
    'logs_sql_errors_title' => 'Logs: SQL errors ',
    'logs_sql_title' => 'Logs: SQL inquiries',
    'logs_title' => 'Log settings',
    'logs_users_enable_title' => 'User activity log',
    'logs_users_enable_notice' => 'You can enable/disable user activity log',
    'logs_turned_on' => 'Enabled',
    'logs_turned_off' => 'Disabled',
    'logs_users_file' => 'File name of user activity log',
    'logs_users_file_notice' => 'Enter file name of user activity log from the folder logs',
    'logs_users_debug' => 'Enable debugging data',
    'logs_users_debug_notice' => 'Debugging data will be included in the log (callstack) ',
    'logs_users_logins' => 'Enable logs for these users only ',
    'logs_users_logins_notice' => 'User logins are listed comma separated with no spaces. If it is set, logs are kept only for these users, otherwise there is a unified log for everyonet',
    'logs_admin_enable_title' => 'Administrator activity log',
    'logs_admin_enable_notice' => 'You can enable/disable administrator activity log',
    'logs_admin_file' => 'File name of administrator activity log',
    'logs_admin_file_notice' => 'Enter file name of administrator activity log from the folder logs',
    'logs_max_size' => 'Maximum size of a log file',
    'logs_too_long' => 'Log file too large for displaying',
    'logs_max_size_notice' => 'On reaching this size a copy and a new file are created. If 0, a new file is created every 24 hours ',
    'logs_max_files' => 'Number of log files copies',
    'logs_max_files_notice' => 'Number of log files archive copies saved on site',
    'blog_edit' => 'Edit blog',
    'blog_delete' => 'Delete blog',
    'blog_del_confirm_text' => 'This blog will be deleted with all its contents:',
    'blog_del_confirm_topics' => 'Number of topics in the blog:',
    'topic_edit' => 'Edit article',
    'topic_delete' => 'Delete article',
    'topic_del_confirm' => 'Topic "%%topic%%; will be deketed  with all its contents. \nDo you want to continue?',
    'param_check_password' => 'Check administrator\'s password',
    'param_check_password_notice' => 'If it\'s set, administrator\'s password reliability is checked.',
    'password_quality' => 'Your password is very weak! Please change the current password!',
    'cache_title' => 'Caching settings',
    'cache_type' => 'Caching type',
    'cache_type_notice' => 'Specify "none" for disabling  caching. The "memory" option uses memcached',
    'cache_type_none' => 'Not used',
    'cache_type_file' => 'File cach',
    'cache_type_memo' => 'Use Memcached',
    'cache_prefix' => 'Caching prefix',
    'cache_prefix_notice' => 'Should be unique for every site so that it is possible to have a few sites with common cache-storage',
    'admin_list_restorecomment' => 'Comments tree rebuild ',
    'admin_list_recalcfavourite' => 'Recalculate favorites counters',
    'admin_list_recalcvote' => 'Recalculate votings counters',
    'admin_list_recalctopic' => 'Recalculate the number of articles in blogs',

    /***
     * CONFIG
     */
    'config_title' => 'Site settings',
    'menu_close_site' => 'Close site',
    'menu_cache' => 'Caching',
    'menu_languages' => 'Languages',
    'menu_installed' => 'Set up',
    'settings_title' => 'Settings',
    'settings_base' => 'Main',
    'settings_edit' => 'Editing',
    'settings_links' => 'Links',
    'settings_sys' => 'System',
    'settings_cssjs' => 'CSS and javascript',
    'settings_acl' => 'Rights',
    'set_links_homepage' => 'Main',
    'set_links_homepage_label' => 'What to display on the main page',
    'set_links_homepage_home' => 'Homepage',
    'set_links_homepage_index' => 'Feed',
    'set_links_homepage_page' => 'Chosen page',
    'set_links_homepage_other' => 'Local IP address',
    'set_links_drafts' => 'Draft copies',
    'set_links_drafts_enable' => 'Show draft copies by a direct link',
    'set_links_topics' => 'Articles',
    'set_links_topics_mode' => 'Links to articles',
    'set_links_topics_mode_alto' => 'Standard',
    'set_links_topics_mode_friendly' => 'User friendly URL',
    'set_links_topics_mode_ls' => 'As in LiveStreet',
    'set_links_topics_mode_id' => 'Article ID (numerical)',
    'set_links_topics_mode_day_name' => 'Day and name',
    'set_links_topics_mode_month_name' => 'Month and name',
    'set_links_topics_mode_custom' => 'Any',
    'set_links_topics_mode_help_title' => 'Admissible parameters',
    'set_links_topics_mode_help_text' => '%year% — year of publication %month% — month %day% — day %hour% — hour %minute% — minutes %second% — seconds %login% — topic author login %blog_url% — blog url (for personal blogs it will be replaced with author\'s login) %topic_id% — publication id %topic_url% — relative URL publications (usually — transliteration of its heading) For compatibility with Wordpress parameters are supported: %post_id% — analog of %topic_id% %postname% — analog of %topic_url% IMPORTANT: existence of the termination of .html isn\'t obligatory, but is recommended since it\'ll allow to avoid possible problems and conflicts with addresses of site\'s other pages',
    'set_links_generate' => 'Generation of links',
    'set_links_generate_text' => 'You can execute generation of links for all articles. It can be necessary if you passed to Alto CMS from any other control system of the site. You also can execute this operation for each article separately, entering a mode of article\'s editing.',
    'set_links_generate_button' => 'Execute generation of links for articles',
    'set_links_generate_count' => 'Number of articles without links: ',
    'set_links_generate_done' => 'Links for articles are generated',
    'set_links_generate_next' => 'Links are generated, but not for all articles. Remained %%num%% articles without links. It is necessary to continue generation of links.',
    'set_links_generate_error' => 'An error of links\' for articles generation',
    'set_edit_comment' => 'Comments editing',
    'set_edit_comment_disabled' => 'Forbidden',
    'set_edit_comment_enabled' => 'Allowed during',
    'set_section_site' => 'Site',
    'set_view_name' => 'Site\'s name',
    'set_view_description' => 'Meta-tag\'s value description',
    'set_view_keywords' => 'Meta-tag\'s value keywords',
    'set_section_general' => 'General',
    'set_general_close' => 'Use the closed operating mode of a site',
    'set_general_reg_invite' => 'Registration is available only by invitations',
    'set_general_reg_activation' => 'Use activation of users at registration',
    'set_title_lang' => 'Languages',
    'set_lang_current' => 'The main language',
    'set_lang_default' => 'Language by default (if there is no phrase in the current language)',
    'set_lang_used' => 'Used languages',
    'set_lang_avail' => 'Available languages',
    'activate_language' => 'Activate language',
    'compare_language' => 'Compare language files',
    'languages_select' => 'Choose  language',
    'languages_activate' => 'Activate',
    'languages_compare' => 'Compare',
    'languages_default' => 'By default',
    'languages_activate_label' => 'Choose language for activation',
    'languages_activate_notice' => 'Choose language for activation from the list of the established languages',
    'language_not_found' => 'Language isn\'t defined',
    'current_language' => 'The current language',
    'selected_language' => 'The language is chosen',
    'set_section_edit' => 'Editing',
    'set_view_wysiwyg' => 'Use  the visual editor',
    'set_view_noindex' => 'To "hide" links in the text of articles from searchers',
    'set_view_img_resize_width' => 'What size on width to compress pictures in the text',
    'set_view_img_max_width' => 'The maximum width of loaded images',
    'set_view_img_max_height' => 'The maximum height of loaded images',
    'set_topic_max_height' => 'The maximum quantity of symbols in article',
    'set_topic_tag_required' => 'Tags to article are obligatory',
    'set_section_sys_cookie' => 'Cookies and sessions',
    'set_sys_cookie_host' => 'A host for installation cookies',
    'set_sys_cookie_path' => 'A way for installation cookies',
    'set_sys_session_standart' => 'Use the standard mechanism of sessions',
    'set_sys_session_name' => 'Session\'s name',
    'set_sys_session_timeout' => 'A session\'s timeout in seconds',
    'set_sys_session_host' => 'A session host in the cookies',
    'set_sys_session_path' => 'A session way in the cookies',
    'set_section_sys_mail' => 'Settings of mailings',
    'set_sys_mail_type' => 'What type of sending to use',
    'set_sys_mail_from_email' => 'The address from which all notices go',
    'set_sys_mail_from_name' => 'A name of the sender from which all notices go',
    'set_sys_mail_charset' => 'What coding to use in letters',
    'set_sys_mail_smtp_host' => 'The SMTP settings - a host',
    'set_sys_mail_smtp_port' => 'The SMTP settings - port',
    'set_sys_mail_smtp_user' => 'The SMTP settings - the user',
    'set_sys_mail_smtp_password' => 'The SMTP settings - the password',
    'set_sys_mail_smtp_auth' => 'Use authorization when sending',
    'set_sys_mail_smtp_secure' => 'Use secured connection type',
    'set_sys_mail_include_comment' => 'Includes the comment text in the notice of new comments',
    'set_sys_mail_include_talk' => 'Includes the message text in the notice of new personal messages',
    'set_section_sys_logs' => 'Settings of logging',
    'set_sys_logs_sql_query' => 'Turn on of logging of all SQL requests',
    'set_sys_logs_sql_query_file' => 'Log file of SQL requests',
    'set_sys_logs_sql_error' => 'Turn on of  logging of SQL errors',
    'set_sys_logs_sql_error_file' => 'Log file of SQL errors',
    'set_sys_logs_profiler' => 'Enable profiling processes',
    'set_sys_logs_profiler_file' => 'Log file of profiling processes',
    'set_sys_logs_cron_file' => 'Log file of cron processes',
    'set_section_css' => 'Settings of processing of CSS files',
    'set_csscompress_merge' => 'Merge CSS files',
    'set_csscompress_merge_notice' => 'CSS files will unite for loading acceleration',
    'set_csscompress_use' => 'Use CSS compression',
    'set_csscompress_use_notice' => 'Compression is used only in the activated mode of merge of CSS files',
    'set_csscompress_force' => 'Forcibly to process CSS',
    'set_csscompress_force_notice' => 'If merge of CSS files is set, it\'s carried out even if there is resultant file',
    'set_css_gzip' => 'Archive CSS in gzip',
    'set_css_gzip_alert' => 'CSS gzipping is possible only when a Web server apache used and module mod_headers is installed.',
    'set_css_gzip_notice' => 'CSS files will be archived in gzip format in which a given client browser (only in compress and merge mode)',
    'set_section_js' => 'Settings of js-files\' processing',
    'set_jscompress_merge' => 'Merge js-files',
    'set_jscompress_merge_notice' => 'js-files will unite for loading acceleration',
    'set_jscompress_use' => 'Use javascript compression',
    'set_jscompress_use_notice' => 'Compression is used only in the activated mode of js-files\' merge',
    'set_jscompress_force' => 'Forcibly to process javascript',
    'set_jscompress_force_notice' => 'If merge of js-files is set, it\'s carried out even if there is resultant file',
    'set_js_gzip' => 'Archive js in gzip',
    'set_js_gzip_alert' => 'CSS gzipping is possible only when a Web server apache used and module mod_headers is installed.',
    'set_js_gzip_notice' => 'Js files will be archived in gzip format in which a given client browser (only in compress and merge mode)',
    'set_section_acl' => 'Settings of access control',
    'set_acl_create_blog_rating' => 'A threshold of a rating at which the user can create the collective blog',
    'set_acl_create_comment_rating' => 'A threshold of a rating at which the user can add comments',
    'set_acl_create_comment_limit_time' => 'Time (sec.) between posting of comments if it\'s 0 that restriction doesn\'t work',
    'set_acl_create_comment_limit_time_rating' => 'A rating above which restriction on time for posting of comments\' ceases to work',
    'set_acl_create_topic_limit_time' => 'Time (sec.) between creation of records if it\'s 0 that restriction doesn\'t work',
    'set_acl_create_topic_limit_time_rating' => 'A rating above which restriction on time for creation of records\' ceases to work',
    'set_acl_create_talk_limit_time' => 'Time (sec.) between sending internal mail if it\'s 0 that restriction doesn\'t work',
    'set_acl_create_talk_limit_time_rating' => 'A rating above which restriction on time for sending internal mail\' ceases to work',
    'set_acl_create_talk_comment_limit_time' => 'Time (sec.) between sending internal mail',
    'set_acl_create_talk_comment_limit_time_rating' => 'A rating above which restriction on time for sending internal mail\' ceases to work',
    'set_acl_vote_blog_rating' => 'A threshold of a rating at which the user can vote for the blog',
    'set_acl_vote_topic_rating' => 'A threshold of a rating at which the user can vote for article',
    'set_acl_vote_comment_rating' => 'A threshold of a rating at which the user can vote for comments',
    'set_acl_vote_user_rating' => 'A threshold of a rating at which the user can vote for the user',
    'set_acl_vote_topic_limit_time' => 'Restriction of voting time for article (sec.)',
    'set_acl_vote_comment_limit_time' => 'Restriction of voting time for the comment (sec.)',

    /***
     * SKINS
     */
    'skins_title' => 'Registration (skins)',
    'active_skin' => 'An active skin',
    'available_skins' => 'Available skins',
    'skin_settings' => 'Skin settings',
    'skin_themes' => 'Subjects',

    /***
     * WIDGETS
     */
    'widgets_title' => 'Widgets',
    'menu_widgets' => 'Widgets',
    'widget_edit_title' => 'Widget\'s editing',
    'widget_name' => 'Widget',
    'widget_plugin' => 'Plug-in',
    'widget_priority' => 'Priority',
    'widget_group' => 'Group (location)',
    'widget_display' => 'When to show',
    'widget_display_alwyas' => 'Always',
    'widget_display_period' => 'During the period',
    'widget_display_from' => 'with',
    'widget_display_upto' => 'on',
    'widget_showto' => 'To whom to show ',
    'widget_showto_all' => 'To all visitors',
    'widget_showto_users' => 'To authorized',
    'widget_showto_admins' => 'To administrators',
    'widget_active' => 'Is included',

    /***
     * PLUGINS
     */
    'plugins_title' => 'Management of plugins',
    'all_plugins' => 'All plugins',
    'active_plugins' => 'Active plugins',
    'inactive_plugins' => 'Inactive plugins',
    'plugin_file_not_found' => 'The file\'s plugin %%file%% isn\'t found',
    'plugin_havenot_getversion_method' => 'A demanded plugin %%plugin%% doesn\'t return version number (isn\'t present GetVersion() method)',
    'plugin_activation_reqversion_error_eq' => 'The activated plugin is necessary for plugin\'s work %%for plugin%%  of the version %%version%%',
    'plugin_activation_reqversion_error_ge' => 'The activated plugin is necessary for plugin\'s work %%for plugin%%  to the version not lower than %%version%%',
    'plugin_activation_reqversion_error_gt' => 'The activated plugin is necessary for plugin\'s work %%for plugin%%  to the version higher than %%version%%',
    'plugin_activation_reqversion_error_le' => 'The activated plugin is necessary for plugin\'s work %%for plugin%%  to the version not higher than %%version%%',
    'plugin_activation_reqversion_error_lt' => 'The activated plugin is necessary for plugin\'s work %%for plugin%%  to the version lower than %%version%%',
    'plugin_activation_error_php' => 'The PHP version necessary for work is not below than %%version%%',
    'plugin_priority_notice' => 'Plug-ins will be loaded in that order in which they are removed in the table. You can change an order of plugins loading, using arrows in the right extreme column',
    'plugin_priority_up' => 'Increase the priority',
    'plugin_priority_down' => 'Reduce the priority',
    'plugin_name' => 'Name',
    'plugin_author' => 'Author',
    'plugin_version' => 'Version',
    'plugin_activate' => 'Activate',
    'plugin_deactivate' => 'Deactivate',
    'plugin_settings' => 'Settings',
    'plugin_unknown_action' => 'Unknown action is specified',
    'plugin_activation_overlap' => 'The conflict to the activated plugin. The resource %%resource%% is redefined on %%delegate%% by plugin %%plugin%%. ',
    'plugin_activation_overlap_inherit' => 'The conflict to the activated plugin. The resource %%resource%% is used as the successor in a plugin %%plugin%%.',
    'plugin_activation_file_not_found' => 'The file of a plugin isn\'t found',
    'plugin_activation_file_write_error' => 'The file of a plugin isn\'t available to record',
    'plugin_activation_version_error' => 'Alto CMS not below %%to version%% is necessary for work of a plugin',
    'plugin_activation_requires_error' => 'The activated plugin %%plugin%% is necessary for work of this plugin',
    'plugin_submit_delete' => 'Remove plugins',
    'plugin_delete_confirm' => 'Are you sure you wish to remove the specified plugins? ',
    'plugin_need_select_for_delete' => 'Choose plugins for removal',
    'plugin_load' => 'Load a plugin',
    'plugin_added_ok' => 'A plugin was successfully added in the list inactive',
    'plugin_added_err' => 'An error of copying of a plugin in a shared folder of plugins',

    /***
     * SCRIPTS
     */

    'scripts_title' => 'Management of scripts',
    'scripts_sub_all' => 'All scripts',
    'scripts_sub_active' => 'Active scripts',
    'scripts_sub_inactive' => 'Inactive scripts',
    'scripts_add' => 'Add script',
    'scripts_edit' => 'Change settings',

    'script_edit_name' => 'Name',
    'script_edit_description' => 'Description',
    'script_edit_code' => 'Code (text)',
    'script_edit_active' => 'Active',
    'script_edit_place' => 'Place',
    'script_edit_place_head' => 'In tag ',
    'script_edit_place_body' => 'In tag  (in begin)',
    'script_edit_place_end' => 'In tag  (at end)',
    'script_edit_show_code' => 'Show code',
    'script_exclude_adminpanel' => 'Exclude adminpanel',
    'script_exclude_adminpanel_note' => 'If checked then script will be included in the pages of Adminpanel',
    'script_submit_delete' => 'Delete scripts',
    'script_delete_confirm' => 'Are you sure you want to delete these scripts?',
    'script_need_select_for_delete' => 'Select the scripts to delete',

    /***
     * USERFIELDS
     */
    'user_fields_title' => 'Fields of users\' contacts',
    'user_field_admin_title_add' => 'Add a field',
    'user_field_admin_title_edit' => 'Change a field',
    'user_field_add' => 'Add',
    'user_field_cancel' => 'Cancellation',
    'user_field_added' => 'The field is successfully added',
    'user_field_update' => 'Change',
    'user_field_updated' => 'The field is successfully changed',
    'user_field_delete' => 'Remove',
    'user_field_delete_confirm_title' => 'Remove the field? ',
    'user_field_delete_confirm_text' => 'Do you want to remove the field "%field%"? ',
    'user_field_deleted' => 'The field is removed',
    'userfield_form_name' => 'Name',
    'userfield_form_type' => 'Type',
    'userfield_form_title' => 'Heading',
    'userfield_form_pattern' => 'A template (value is substituted in a token {*})',
    'user_field_error_add_no_name' => 'Need to specify the field\'s name',
    'user_field_error_add_no_title' => 'Need to specify field\'s heading',
    'user_field_error_name_exists' => 'The field with such name is already exists',

    /***
     * TOOLS
     */
    'reset_title' => 'Dumping of data',
    'menu_reset_cache' => 'Cach dumping',
    'menu_reset_config' => 'Configuration dumping',
    'cache_clear_data' => 'Cleaning cach data',
    'cache_clear_data_notice' => 'Dumping of data cach-storage',
    'cache_clear_assets' => 'Cleaning js- and css-files cach',
    'cache_clear_assets_notice' => 'Dumping of js-kesh-storage and css-files',
    'cache_clear_smarty' => 'Cleaning Smarty cach',
    'cache_clear_smarty_notice' => 'Dumping of the compiled Smarty files cach-storage',
    'cache_clean' => 'Dumping cach',
    'cache_clean_notice' => 'Establish if you want to dump cach',
    'reset_config_data' => 'Dumping of configuration\'s changed parameters',
    'reset_config_data_notice' => 'All parameters which you changed through Adminpanel, will be dumped in initial value, i.e. that are set in configuration files',
    'action_for_admin_only' => 'This action is available only for administrators',
    'cannot_clear_dir' => 'It\'s impossible to  clear the folder %%dir%%. It is recommended to make this manually',
    'comments_tree_title' => 'Evolution of comment tree',
    'comments_tree_message' => 'The tree of comments will be reconstructed. Attention! Operation can take a long time!',
    'comments_tree_disabled' => 'This action is inaccessible',
    'comments_tree_restored' => 'The tree of comments is reconstructed',
    'recalcfavourites_title' => 'Recalculation of elite counters',
    'recalcfavourites_message' => 'Counters of the chosen articles and comments for all users will be counted.

 Attention! Operation can take a long time!',
    'favourites_recalculated' => 'Counters of the elite are counted',
    'recalcvotes_title' => 'Recalculation of vote counters',
    'recalcvotes_message' => 'The vote counters will be counted.

Attention! Operation can take a long time!',
    'votes_recalculated' => 'Vote counters are counted',
    'recalctopics_title' => 'Recalculation the number of blog articles',
    'recalctopics_message' => 'The number of articles in all blogs will be counted.

 Attention! Operation can take a long time!',
    'topics_recalculated' => 'The number of articles is counted',
    'recalcblograting_title' => 'Recalculation of a blogs\' rating',
    'recalcblograting_message' => 'The blogs\' rating will be counted.

 Attention! Operation can take a long time!',
    'blograting_recalculated' => 'The blog rating is counted',
    'checkdb_title' => 'Database control',
    'checkdb_deleted_blogs' => 'Verification of remote blogs',
    'checkdb_deleted_topics' => 'Verification of remote articles',
    'checkdb_blogs_joined' => 'Remote blogs in which users\' consist',
    'checkdb_blogs_comments_online' => 'Remote blogs with online comments',
    'checkdb_clear_unlinked_blogs' => 'Remove communications',
    'checkdb_topics_comments_online' => 'Remote articles with online comments',
    'checkdb_clear_unlinked_comments' => 'Remove unlinked comments',
    'pages_title' => 'Management of static pages',
    'pages_create' => 'Creation of the new page',
    'pages_edit' => 'Page editing',
    'pages_create_parent_page' => 'Enclose in',
    'pages_create_parent_page_error' => 'The page for an investment is chosen incorrectly',
    'pages_create_title' => 'Name',
    'pages_create_title_error' => 'The page name has to be from 2 to 200 symbols',
    'pages_create_url' => 'URL',
    'pages_create_url_error' => 'URL has to be from 1 to 50 symbols; it must be and only in Latin + figures and signs "-", "_"',
    'pages_create_url_error_bad' => 'URL has to differ from:',
    'pages_create_text' => 'Text',
    'pages_create_text_error' => 'The text of the page has to be from 1 to 50000 symbols',
    'pages_create_seo_keywords' => 'SEO keywords',
    'pages_create_seo_keywords_notice' => 'Keywords for SEO optimization',
    'pages_create_seo_description' => 'SEO description',
    'pages_create_seo_description_notice' => 'The description for SEO optimization',
    'pages_create_sort' => 'Sorting',
    'pages_create_sort_notice' => 'Establishes sorting at display',
    'pages_create_sort_error' => 'Sorting has to be number',
    'pages_create_active' => 'Show the page',
    'pages_create_auto_br' => 'Automatic transfers of lines',
    'pages_create_main' => 'Display the main page',
    'pages_create_submit_save' => 'save',
    'pages_create_submit_save_ok' => 'The new page is added',
    'pages_create_submit_cancel' => 'Cancellation',
    'pages_edit_notfound' => 'The page for editing isn\'t found',
    'pages_edit_submit_save_ok' => 'The page is refreshed',
    'pages_admin_title' => 'Name',
    'pages_admin_url' => 'URL',
    'pages_admin_active' => 'Is active',
    'pages_admin_main' => 'On main',
    'pages_admin_sort_up' => 'Move above',
    'pages_admin_sort_down' => 'Move below',
    'pages_admin_active_yes' => 'yes',
    'pages_admin_active_no' => 'no',
    'pages_admin_action' => 'Action',
    'pages_admin_action_edit' => 'Edit',
    'pages_admin_action_delete' => 'Remove',
    'pages_admin_action_delete_ok' => 'The page is removed',
    'pages_admin_action_delete_error' => 'A mistake during removal of the page is arose',
    'pages_admin_action_delete_confirm' => 'Are you really want to remove this page with all enclosed pages?',
    'pages' => 'Static pages',
    'pages_new' => 'The new page',
    'pages_options' => 'Options',
    'page_options_urls' => 'Reserved URLs',
    'page_options_urls_notice' => 'Reserved URLs (through a comma) which can\'t be used at creation of new pages',
    'pages_list' => 'All pages',
    'pages_active' => 'Active pages',
    'pages_inactive' => 'Inactive pages',
    'menu_pages_new' => 'New',
    'menu_pages_options' => 'Options',

    /***
     * Blog types
     */
    'blogtypes_menu' => 'Types of blogs',
    'blogtypes_add' => 'Add new',
    'blogtypes_add_title' => 'Addition of new type of the blog',
    'blogtypes_edit_title' => 'Editing like the blog',
    'blogtypes_opt_title' => 'Properties of the blog',
    'blogtypes_acl_title' => 'Access rights to the blog',
    'blogtypes_typecode' => 'Type',
    'blogtypes_name' => 'The name the blog type',
    'blogtypes_name_notice' => 'Enter the name of the blog type or select a phrase from language file in double curly brackets {{...}}',
    'blogtypes_title' => 'Blog name by default',
    'blogtypes_description' => 'The description the blog type',
    'blogtypes_description_notice' => 'Enter a description of the blog type or select a phrase from language file in double curly brackets {{...}}',
    'blogtypes_min_rating' => 'The minimum rating for creation',
    'blogtypes_allow_add' => 'Users can create',
    'blogtypes_allow_add_notice' => 'Can users (not administrators) create blogs of this type',
    'blogtypes_membership' => 'Membership in blogs',
    'blogtypes_membership_notice' => 'Members of blogs can have advantages before other users',
    'blogtypes_acl_write' => 'Who can write',
    'blogtypes_acl_write_notice' => 'Who, except the owner of the blog, can write to it',
    'blogtypes_acl_read' => 'Who can read',
    'blogtypes_acl_read_notice' => 'Who, except the owner of the blog, can read it',
    'blogtypes_acl_comment' => 'Who can make comments on',
    'blogtypes_acl_comment_notice' => 'Who, except the owner of the blog, can make comments on it',
    'blogtypes_acl_owner' => 'Owner only',
    'blogtypes_acl_members' => 'Only participants',
    'blogtypes_acl_users' => 'All users',
    'blogtypes_acl_guests' => 'Any visitors of the site',
    'blogtypes_with_rating_from' => 'With a rating from',
    'blogtypes_need_min_rating' => 'A demanded min. rating',
    'blogtypes_min_rate_write' => 'The minimum rating for writing',
    'blogtypes_min_rate_read' => 'The minimum rating for reading',
    'blogtypes_min_rate_comment' => 'The minimum rating for commenting',
    'blogtypes_del_confirm_title' => 'Do you want to delete the blog type?',
    'blogtypes_del_confirm_text' => 'Do you really want to delete blog type %%name%%?',
    'blogtypes_del_success' => 'Blog type %%name%% deleted',
    'blogtypes_del_err' => 'Error deleting blog type',
    'blogtypes_del_err_text' => 'Error deleting blog type %%name%%',
    'blogtypes_del_err_notempty' => 'There are blogs of such type (%%count%%)',
    'blog_user_role_administrator' => 'Administrator',
    'blog_user_role_moderator' => 'Moderator',
    'blog_user_role_member' => 'Participant',
    'blog_user_role_notmember' => 'Anyone',

    /***
     * Subscription on blogs
     */
    'blog_membership_none' => 'None',
    'blog_membership_free' => 'Free',
    'blog_membership_request' => 'On demand',
    'blog_membership_invite' => 'By the invitation',
    'blogtypes_content_title' => 'Blog content',
    'blogtypes_show_title' => 'Show blogs\' titles',
    'blogtypes_show_title_notice' => 'Blogs\' titles will be shown in lists of blogs',
    'blogtypes_index_content' => 'Index a content',
    'blogtypes_index_content_notice' => 'A blogs\' content will be indexed and be given by search',
    'blogtypes_contenttypes' => 'Content\'s type',
    'blogtypes_contenttypes_notice' => 'Admissible type of a kontant which can be in the blog',
    'blogtypes_contenttypes_any' => 'Any',
    'blogtypes_err_id_notfound' => 'Blog\'s type with set ID isn\'t found',

    /***
     * User rights
     */
    'userrights_menu' => 'Rights of users',
    'userrights_blogs_title' => 'Rights of users (blogs)',
    'userrights_blogs_control_users' => 'Operate users of the blog',
    'userrights_blogs_edit_blog' => 'Edit the blog',
    'userrights_blogs_edit_content' => 'Edit articles',
    'userrights_blogs_delete_content' => 'Delete articles',
    'userrights_blogs_edit_comment' => 'Edit comments',
    'userrights_blogs_delete_comment' => 'Delete comments',

    /***
     * Content types
     */
    'contenttypes_menu' => 'Content types',
    'contenttypes_add' => 'Add new',
    'contenttypes_add_title' => 'Addition thef new type of a content',
    'contenttypes_edit_title' => 'Editing content type',
    'contenttypes_add_field_title' => 'Addition of a new field',
    'contenttypes_edit_field_title' => 'Field editing',
    'contenttypes_types_list' => 'List of content type',
    'contenttypes_add_additional' => 'to Connect',
    'contenttypes_title' => 'Name',
    'contenttypes_title_notice' => 'For example, Review',
    'contenttypes_title_decl' => 'The name in plural',
    'contenttypes_title_decl_notice' => 'For example, Reviews',
    'contenttypes_type_access' => 'Access on creation',
    'contenttypes_type_access_all' => 'All',
    'contenttypes_type_access_admin' => 'Only to the administrator',
    'contenttypes_type_access_role' => 'Only to the chosen roles (are edited in role plugin)',
    'contenttypes_type_access_notice' => 'Choose access type on addition to this type of article',
    'contenttypes_url' => 'The office identifier',
    'contenttypes_url_notice' => 'Only Latin and underlining. For example, review',
    'save_sort_success' => 'Sorting is successfully kept',
    'contenttypes_del_confirm_title' => 'Do you want to delete content type?',
    'contenttypes_del_confirm_text' => 'Do you really want to delete content type %%name%%?',
    'contenttypes_del_success' => 'Content type strong>%%name%% deleted',
    'contenttypes_del_err' => 'Error deleting content type',
    'contenttypes_del_err_text' => 'Error deleting content type %%name%%',
    'contenttypes_del_err_notempty' => 'There are articles of such type (%%count%%)',

    /***
     * Fields
     */
    'contenttypes_field' => 'Field',
    'contenttypes_fields' => 'Fields',
    'contenttypes_fields_added' => 'The added fields',
    'contenttypes_add_field' => 'Add the field',
    'contenttypes_name' => 'Name',
    'contenttypes_description' => 'Description',
    'contenttypes_type' => 'Type',
    'contenttypes_values' => 'Values (on one on every line)',
    'contenttypes_required' => 'Obligatory',
    'contenttypes_required_notice' => 'An obligatory field for filling',
    'contenttypes_field_input' => 'String field',
    'contenttypes_field_textarea' => 'Text field',
    'contenttypes_field_file' => 'File',
    'contenttypes_field_photoset' => 'Block of a photo loading',
    'contenttypes_field_link' => 'Link',
    'contenttypes_field_select' => 'The dropping-out list',
    'contenttypes_field_date' => 'Date (calendar)',
    'contenttypes_field_image'    => 'Image',
    'contenttypes_field_map' => 'Map',
    'contenttypes_field_daoobj' => 'Objects of the DAO catalogs',
    'contenttypes_field_litepoll' => 'Block of LitePoll\'s polls of a plugin',
    'contenttypes_field_gallery' => 'Block of an insert of plugin\'s LsGallery albums',
    'contenttypes_field_input_notice' => 'An one-line field',
    'contenttypes_field_textarea_notice' => 'The multilower case field with the editor',
    'contenttypes_field_file_notice' => 'A field for file is loading',
    'contenttypes_field_photoset_notice' => 'Package loader of a photo will be connected the (as in a photoset)',
    'contenttypes_field_link_notice' => 'URL',
    'contenttypes_field_select_notice' => 'The dropping-out list',
    'contenttypes_field_date_notice' => 'Date (calendar)',
    'contenttypes_field_image_notice'    => 'Image',
    'contenttypes_field_map_notice' => 'Map',
    'contenttypes_field_daoobj_notice' => 'Objects of the DAO catalogs',
    'contenttypes_field_litepoll_notice' => 'Block of LitePoll\'s polls of a plugin',
    'contenttypes_field_gallery_notice' => 'Block of an insert LsGallery\'s plugin of albums',
    'contenttypes_count_downloads' => 'Downloadings',
    'contenttypes_delete_file' => 'Remove the file',
    'contenttypes_file_rewrite' => 'Will be rewritten',
    'contenttypes_field_detele_confirm' => 'Are you really want to remove this field?',
    'contenttypes_additional_photoset' => 'Fotoset',
    'contenttypes_additional_question' => 'Poll',
    'contenttypes_additional_link' => 'Link to the original',

    /***
     * Administration
     */
    'contenttypes_actions' => 'Actions',
    'contenttypes_status' => 'State',
    'contenttypes_on' => 'Is active',
    'contenttypes_off' => 'Is disconnected',
    'contenttypes_turn_on' => 'Include',
    'contenttypes_turn_off' => 'Switch off',
    'contenttypes_submit' => 'Save',
    'contenttypes_save' => 'Save',
    'contenttypes_edit' => 'Editing',
    'contenttypes_delete' => 'Remove',
    'contenttypes_standart' => 'Standard',
    'contenttypes_for' => 'For',
    'contenttypes_by_type' => 'Topics on type',
    'contenttypes_nocomments' => 'There aren\'t comments',
    'contenttypes_topic_edit' => 'Article editing',
    'contenttypes_add_prefix' => 'Add',
    'contenttypes_afteradd' => 'Addition of additional fields becomes available  after the addition of new type',

    /***
     * ERRORS
     */
    'contenttypes_error_noallow_type' => 'You are forbidden to add articles of this type',
    'contenttypes_type_title_error' => 'The field\'s name can be from 2 to 200 symbols',
    'contenttypes_type_title_decl_error' => 'The field\'s name (multiply numbers) can be from 2 to 200 symbols',
    'contenttypes_type_url_error' => 'The field\'s of the office name (URL) can be from 2 to 50 symbols, only Latin, without gaps. The address also can\'t coincide with existing addresses of actions',
    'contenttypes_field_name_error' => 'The field\'s name has to be from 2 to 100 symbols',
    'contenttypes_field_description_error' => 'The description of a field has to be from 2 to 200 symbols',
    'contenttypes_field_type_error' => 'Incorrect type of the field',
    'contenttypes_field_daoobj_error' => 'There is a mistake in data of communication with object of DAO',
    'contenttypes_download_file_error' => 'There is a mistake during downloading file',
    'contenttypes_save_sort_success' => 'Sorting is kept',
    'contenttypes_success_add' => 'New type is successfully added',
    'contenttypes_success_edit' => 'Edited successfully',
    'contenttypes_success_del' => 'Deleted successfully',
    'contenttypes_success_fieldadd' => 'The field is added',
    'contenttypes_success_fieldedit' => 'The field is edited successfully',
    'contenttypes_success_fielddelete' => 'The field is removed successfully',
    'contenttypes_dao_link_view_type' => 'Conclusion type during viewing article',
    'contenttypes_dao_link_view_type_link' => 'Links',
    'contenttypes_dao_link_view_type_obj' => 'The list of objects in DAO registration',
    'contenttypes_role_topiccck' => 'Article addition',
);

// EOF


text:
package com.zerofall.ezstorage.gui.server;

import javax.annotation.Nonnull;

import com.zerofall.ezstorage.network.EZNetwork;
import com.zerofall.ezstorage.tileentity.TileEntitySecurityBox;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IContainerListener;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

/** The secure box container */
public class ContainerSecurityBox extends Container {

	private TileEntitySecurityBox tileSecure;

	public ContainerSecurityBox(InventoryPlayer player, TileEntitySecurityBox tile) {
		this.tileSecure = tile;

		int yoff_inv = 64;

		// player inventory placement
		int i;

		for (i = 0; i < 3; ++i) {
			for (int j = 0; j < 9; ++j) {
				this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + yoff_inv));
			}
		}

		for (i = 0; i < 9; ++i) {
			this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 142 + yoff_inv));
		}

	}

	@Override
	public void addListener(IContainerListener listener) {
		super.addListener(listener);
		// send a sync message to the client
		EZNetwork.sendSecureSyncMsg(tileSecure.getWorld(), tileSecure.getPos(), tileSecure.getAllowedPlayers());
	}

	@Override
	public boolean canInteractWith(EntityPlayer player) {
		return true;
	}

	/** Call for removal, then do a resync */
	@Override
	public boolean enchantItem(EntityPlayer player, int action) {
		boolean flag = tileSecure.getAllowedPlayers().remove(action) != null;
		tileSecure.markDirty();
		EZNetwork.sendSecureSyncMsg(tileSecure.getWorld(), tileSecure.getPos(), tileSecure.getAllowedPlayers());
		return flag;
	}

	/** Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that. */
	@Override
	public @Nonnull ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
		ItemStack itemstack = ItemStack.EMPTY;
		Slot slot = this.inventorySlots.get(par2);

		int INPUT = -1;

		if (slot != null && slot.getHasStack()) {
			ItemStack itemstack1 = slot.getStack();
			itemstack = itemstack1.copy();

			// itemstack is in player inventory, try to place in slot
			if (par2 != INPUT) {
				// item in player's inventory, but not in action bar
				if (par2 >= INPUT + 1 && par2 < INPUT + 28) {
					// place in action bar
					if (!this.mergeItemStack(itemstack1, INPUT + 28, INPUT + 37, false)) {
						return ItemStack.EMPTY;
					}
				}
				// item in action bar - place in player inventory
				else if (par2 >= INPUT + 28 && par2 < INPUT + 37 && !this.mergeItemStack(itemstack1, INPUT + 1, INPUT + 28, false)) {
					return ItemStack.EMPTY;
				}
			}

			if (itemstack1.getCount() == 0) {
				slot.putStack(ItemStack.EMPTY);
			} else {
				slot.onSlotChanged();
			}

			if (itemstack1.getCount() == itemstack.getCount()) {
				return ItemStack.EMPTY;
			}

			slot.onTake(par1EntityPlayer, itemstack1);
		}
		return itemstack;
	}
}


text:
package com.intellij.codeInsight.template;

import com.intellij.openapi.editor.Document;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import javax.annotation.Nonnull;

public class TextResult implements Result{
  private final String myText;

  public TextResult(@Nonnull String text) {
    myText = text;
  }

  @Nonnull
  public String getText() {
    return myText;
  }

  @Override
  public boolean equalsToText(String text, PsiElement context) {
    return text.equals(myText);
  }

  public String toString() {
    return myText;
  }

  @Override
  public void handleFocused(final PsiFile psiFile, final Document document, final int segmentStart, final int segmentEnd) {
  }
}


text:
setInterval(function () {
  process.stdout.write(2 + '\n')
}, 30)


text:
"""
    merge_filter.py -- merge the position data with the data in VIVO.  Oh my.  Add a column for uri, add a
    column for uf current, add a column for remove

    There are two inputs:
    1. UF people in VIVO, keyed by UFID
    2. UF people on the pay list.  Keyed by UFID

    See CHANGELOG.md for history
"""

__author__ = "Michael Conlon"
__copyright__ = "Copyright 2015 (c) Michael Conlon"
__license__ = "New BSD License"
__version__ = "0.02"

from vivopump import read_csv_fp, write_csv_fp, get_vivo_ufid, get_parms
import sys

parms = get_parms()
data_in = read_csv_fp(sys.stdin)
print >>sys.stderr, len(data_in)
data_out = {}
vivo_ufid = get_vivo_ufid(parms)  # get dictionary of uri keyed by ufid
vivo_ufids = vivo_ufid.keys()
print >>sys.stderr, 'VIVO ufid', len(vivo_ufid)
source_ufid = [data_in[x]['UFID'] for x in data_in]
print >>sys.stderr, 'Source ufid', len(source_ufid)

vivo_data = data_in[data_in.keys()[0]]  # Grab a row, any row

#   Process ufid in VIVO and in Source

for row, data in data_in.items():
    ufid = data['UFID']
    if ufid in vivo_ufids:  # ufid is in vivo and source
        data_out[row] = dict(data)
        data_out[row]['uri'] = vivo_ufid[ufid]
        data_out[row]['current'] = 'yes'
    else:  # ufid is in source, not in vivo
        data_out[row] = dict(data)
        data_out[row]['uri'] = ''
        data_out[row]['current'] = 'yes'

#   Some ufids are in VIVO and not in the source data (mostly people who have left the university and are
#   no longer being paid).  These people need to be in the update data so that their contact data and other
#   attributes can be checked and updated.  Their data starts as blank -- no update.  But they may gain values
#   through additional filtering operations

row_number = max(data_in.keys())  # vivo will continue numbering rows from here
blank_data = dict(zip(vivo_data.keys(), ['' for x in vivo_data.keys()]))
print >>sys.stderr, blank_data
print >>sys.stderr, vivo_ufid
for ufid, uri in vivo_ufid.items():
    if ufid not in source_ufid:
        row = dict(blank_data)
        row['UFID'] = ufid
        row['uri'] = uri
        row['current'] = 'no'
        row_number += 1
        data_out[row_number] = row
        print >>sys.stderr, row_number, data_out[row_number]

print >>sys.stderr, 'data out', len(data_out)
write_csv_fp(sys.stdout, data_out)


text:
title: return of the alba
author: alba
layout: post
permalink: /2002/03/11/return-of-the-alba/
categories:
  - media
tags:
  - media
---
yo. done with l.a. now back in sf where the weather has decided to go back to winter. other things keeping the bay area busy. the new star wars ep 2 trailer entitled [clone wars][1], not bad. maybe there's a chance it won't suck.

 [1]: http://starwars.apple.com/ep2/clone_war/index.html


text:
package com.dabaeen.workaholic;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

import com.pnikosis.materialishprogress.ProgressWheel;

/**
 * Created by redtroops on 1/26/15.
 */
public class NotificationActivity extends Activity {

    boolean viewed = false;
    ProgressWheel wheel;
    TextView tvDuration, tvToday;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification);

        tvDuration = (TextView) findViewById(R.id.tvDuration);
        tvToday = (TextView) findViewById(R.id.tvToday);
        wheel = (ProgressWheel) findViewById(R.id.progress_wheel);

        wheel.setRimColor(getResources().getColor(R.color.accent));
        wheel.setBarWidth(20);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        if(hasFocus && !viewed){
            viewed = true;
            setWorkingProgress(App.today().SecondsWorked);
        }
        super.onWindowFocusChanged(hasFocus);
    }

    private void setWorkingProgress(long seconds){

        float progress;

        if(App.prefs.getBoolean(App.IS_COUNTING, false)){
            tvDuration.setText("Reached Day Goal!");
            progress = 1;
        } else {
            tvDuration.setText(App.today().getDuration());
            progress = (float) seconds/App.dailyWork;
        }

        if(progress>=1) {
            progress = 1;
            wheel.setBarColor(getResources().getColor(R.color.gplus_color_4));
        } else {
            wheel.setBarColor(getResources().getColor(R.color.primaryDark));
        }
        wheel.setSpinSpeed(progress);
        wheel.setProgress(progress);

        App.playSound();

       Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        },4000);
    }

    public void CloseThis(View view){
        finish();
    }

}


text:
import cgi

# define files to use
header_file_name 	= 'files/header'
footer_file_name 	= 'files/footer'
book_file_name 		= 'files/book'
form_file_name		= 'files/form'

##########################
## Function Definitions ##
##########################

# Print the header from an external file
def printfile( file_name ):
	file = open( file_name , "r")
	for line in file.readlines():
		print line
	file.close();

# define a function for the message entry
# entry == the form dictionary
# book  == the guestbook file
def bookEntry( entry ):
	book = open( book_file_name, 'a')
	book.write( '
%s' % entry['name'].value )
	book.write( '''

	''' )
	if entry.has_key('email'):
		email = entry['email'].value
		book.write( '\n  %s\n' % (email,email) )
		book.write( '     \n
\n' )
	if entry.has_key('website'):
		website = entry['website'].value
		book.write( '\n  %s\n' % (website,website) )
		book.write( '     \n' )
	book.write( '	\n%s\n
\n' %entry['message'].value )
	book.write( '

\n\n\n' )
	book.close()   # This line was changed from the April 30 version

###################
## Program Logic ##
###################

# create the form dictionary
form = cgi.FieldStorage()

# check if a from was submitted
if len( form ) > 1:
	# check to see if both a name and message are provided
	if not (form.has_key("name") and form.has_key("message")):
		print "To add an entry, both name and message is required";
	else:
		bookEntry( form )

#################
## Page Output ##
#################

# print a header
print "content-Type: text/html"
print

# Print the header from an external file
printfile( header_file_name )

# read the current guestbook
printfile( book_file_name )

# write a form
printfile( form_file_name )

# print the footer
printfile( footer_file_name )


text:
package org.redisson.reactive;

import org.redisson.ScanResult;
import org.redisson.api.RFuture;
import org.redisson.client.RedisClient;
import reactor.core.publisher.FluxSink;

import java.util.function.Consumer;

/**
 *
 * @author Nikita Koksharov
 *
 * @param <V> value type
 */
public abstract class SetReactiveIterator<V> implements Consumer<FluxSink<V>> {

    @Override
    public void accept(FluxSink<V> emitter) {
        emitter.onRequest(new IteratorConsumer<V>(emitter) {
            @Override
            protected boolean tryAgain() {
                return SetReactiveIterator.this.tryAgain();
            }

            @Override
            protected RFuture<ScanResult<Object>> scanIterator(RedisClient client, long nextIterPos) {
                return SetReactiveIterator.this.scanIterator(client, nextIterPos);
            }
        });
    }

    protected boolean tryAgain() {
        return false;
    }

    protected abstract RFuture<ScanResult<Object>> scanIterator(RedisClient client, long nextIterPos);

}


text:
#ifndef __c2_SALTStabilizationInnerOuterLoop_h__
#define __c2_SALTStabilizationInnerOuterLoop_h__

/* Include files */
#include "sfc_sf.h"
#include "sfc_mex.h"
#include "rtwtypes.h"

/* Type Definitions */
typedef struct {
  const char * context;
  const char * name;
  const char * dominantType;
  const char * resolved;
  uint32_T fileTimeLo;
  uint32_T fileTimeHi;
  uint32_T mFileTimeLo;
  uint32_T mFileTimeHi;
} c2_ResolvedFunctionInfo;

typedef struct {
  SimStruct *S;
  int32_T c2_sfEvent;
  uint32_T chartNumber;
  uint32_T instanceNumber;
  boolean_T c2_doneDoubleBufferReInit;
  boolean_T c2_isStable;
  uint8_T c2_is_active_c2_SALTStabilizationInnerOuterLoop;
  ChartInfoStruct chartInfo;
} SFc2_SALTStabilizationInnerOuterLoopInstanceStruct;

/* Named Constants */

/* Variable Declarations */

/* Variable Definitions */

/* Function Declarations */
extern const mxArray
  *sf_c2_SALTStabilizationInnerOuterLoop_get_eml_resolved_functions_info(void);

/* Function Definitions */
extern void sf_c2_SALTStabilizationInnerOuterLoop_get_check_sum(mxArray *plhs[]);
extern void c2_SALTStabilizationInnerOuterLoop_method_dispatcher(SimStruct *S,
  int_T method, void *data);

#endif


text:
<?php

namespace Symfony\Bridge\Twig\Tests\Extension;

use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\FormRenderer;
use Symfony\Component\Form\FormView;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;

/**
 * Class providing test cases for the Bootstrap 5 Twig form theme.
 *
 * @author Romain Monteil <monteil.romain@gmail.com>
 */
class FormExtensionBootstrap5LayoutTest extends AbstractBootstrap5LayoutTest
{
    use RuntimeLoaderProvider;

    /**
     * @var FormRenderer
     */
    private $renderer;

    protected function setUp(): void
    {
        parent::setUp();

        $loader = new FilesystemLoader([
            __DIR__.'/../../Resources/views/Form',
            __DIR__.'/Fixtures/templates/form',
        ]);

        $environment = new Environment($loader, ['strict_variables' => true]);
        $environment->addExtension(new TranslationExtension(new StubTranslator()));
        $environment->addExtension(new FormExtension());

        $rendererEngine = new TwigRendererEngine([
            'bootstrap_5_layout.html.twig',
            'custom_widgets.html.twig',
        ], $environment);
        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder(CsrfTokenManagerInterface::class)->getMock());
        $this->registerTwigRuntimeLoader($environment, $this->renderer);
    }

    public function testStartTagHasNoActionAttributeWhenActionIsEmpty()
    {
        $form = $this->factory->create(FormType::class, null, [
            'method' => 'get',
            'action' => '',
        ]);

        $html = $this->renderStart($form->createView());

        self::assertSame('<form name="form" method="get">', $html);
    }

    public function testStartTagHasActionAttributeWhenActionIsZero()
    {
        $form = $this->factory->create(FormType::class, null, [
            'method' => 'get',
            'action' => '0',
        ]);

        $html = $this->renderStart($form->createView());

        self::assertSame('<form name="form" method="get" action="0">', $html);
    }

    public function testMoneyWidgetInIso()
    {
        $environment = new Environment(new FilesystemLoader([
            __DIR__.'/../../Resources/views/Form',
            __DIR__.'/Fixtures/templates/form',
        ]), ['strict_variables' => true]);
        $environment->addExtension(new TranslationExtension(new StubTranslator()));
        $environment->addExtension(new FormExtension());
        $environment->setCharset('ISO-8859-1');

        $rendererEngine = new TwigRendererEngine([
            'bootstrap_5_layout.html.twig',
            'custom_widgets.html.twig',
        ], $environment);
        $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder(CsrfTokenManagerInterface::class)->getMock());
        $this->registerTwigRuntimeLoader($environment, $this->renderer);

        $view = $this->factory
            ->createNamed('name', MoneyType::class)
            ->createView();

        self::assertSame(<<<'HTML'

€ <input type="text" id="name" name="name" required="required" class="form-control" />

HTML
            , trim($this->renderWidget($view)));
    }

    protected function renderForm(FormView $view, array $vars = []): string
    {
        return $this->renderer->renderBlock($view, 'form', $vars);
    }

    protected function renderLabel(FormView $view, $label = null, array $vars = []): string
    {
        if (null !== $label) {
            $vars += ['label' => $label];
        }

        return $this->renderer->searchAndRenderBlock($view, 'label', $vars);
    }

    protected function renderHelp(FormView $view): string
    {
        return $this->renderer->searchAndRenderBlock($view, 'help');
    }

    protected function renderErrors(FormView $view): string
    {
        return $this->renderer->searchAndRenderBlock($view, 'errors');
    }

    protected function renderWidget(FormView $view, array $vars = []): string
    {
        return $this->renderer->searchAndRenderBlock($view, 'widget', $vars);
    }

    protected function renderRow(FormView $view, array $vars = []): string
    {
        return $this->renderer->searchAndRenderBlock($view, 'row', $vars);
    }

    protected function renderRest(FormView $view, array $vars = []): string
    {
        return $this->renderer->searchAndRenderBlock($view, 'rest', $vars);
    }

    protected function renderStart(FormView $view, array $vars = []): string
    {
        return $this->renderer->renderBlock($view, 'form_start', $vars);
    }

    protected function renderEnd(FormView $view, array $vars = []): string
    {
        return $this->renderer->renderBlock($view, 'form_end', $vars);
    }

    protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true): void
    {
        $this->renderer->setTheme($view, $themes, $useDefaultThemes);
    }
}