Fix missing parameters in method calls
[GitHub/WoltLab/WCF.git] / wcfsetup / install / lang / en.xml
index d7dbcd415156183773dbcf3892699ed3e912663e..3c3a9ba3f87d6505c815b91855a140562babc665 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/vortex/language.xsd" languagecode="en" languagename="English" countrycode="gb">
        <category name="wcf.acl">
+               <item name="wcf.acl.tests"><![CDATA[Restricted Access]]></item>
                <item name="wcf.acl.access"><![CDATA[Restricted Access]]></item>
                <item name="wcf.acl.access.grant"><![CDATA[Allow Access]]></item>
                <item name="wcf.acl.access.granted"><![CDATA[Granted Access for Users and User-Groups]]></item>
@@ -76,6 +77,9 @@
                <item name="wcf.acp.article.button.toggleI18n"><![CDATA[Internationalization]]></item>
                <item name="wcf.acp.article.button.viewArticle"><![CDATA[Show Preview]]></item>
                <item name="wcf.acp.article.category"><![CDATA[Category]]></item>
+               <item name="wcf.acp.article.category.sortField"><![CDATA[Show Order]]></item>
+               <item name="wcf.acp.article.category.sortField.publicationDate"><![CDATA[Publication Date]]></item>
+               <item name="wcf.acp.article.category.sortField.title"><![CDATA[Title]]></item>
                <item name="wcf.acp.article.content"><![CDATA[Content]]></item>
                <item name="wcf.acp.article.delete.confirmMessage"><![CDATA[Do you really want to delete {if $isArticleEdit|empty}the article <span class="confirmationObject">{$article->getTitle()}</span>{else}this article{/if}?]]></item>
                <item name="wcf.acp.article.enableComments"><![CDATA[Enable comments]]></item>
                <item name="wcf.acp.bbcode.add"><![CDATA[Add BBCode]]></item>
                <item name="wcf.acp.bbcode.add.userGroupOptionInfo"><![CDATA[Newly created BBCodes will be accessible for everyone. You can restrict usage by editing the specific user group permissions.]]></item>
                <item name="wcf.acp.bbcode.attribute"><![CDATA[Attribute]]></item>
+               <item name="wcf.acp.bbcode.numberedAttribute"><![CDATA[Attribute {#$attributeNumber}]]></item>
                <item name="wcf.acp.bbcode.attribute.attributeHtml"><![CDATA[Attribute HTML code]]></item>
                <item name="wcf.acp.bbcode.attribute.validationPattern"><![CDATA[Regular Expression for Validation]]></item>
                <item name="wcf.acp.bbcode.attribute.validationPattern.error.invalid"><![CDATA[The regular expression failed to validate.]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.html.description"><![CDATA[{literal}Variables are recognized as {$variable} and will be replaced with the regular expression’s matching named group. Enter the media’s HTML code here. Example: <code>{$ID}</code> will be replaced with the medium ID as shown above.{/literal}]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.list"><![CDATA[Media Providers]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.regex"><![CDATA[Regular Expression]]></item>
-               <item name="wcf.acp.bbcode.mediaProvider.regex.description"><![CDATA[Provide the link format as a <a href="{@$__wcf->getPath()}acp/dereferrer.php?url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRegular_expression">regular expression</a>. Enter one expression per line. Examples for medium ID detection:
+               <item name="wcf.acp.bbcode.mediaProvider.regex.description"><![CDATA[Provide the link format as a <a href="https://en.wikipedia.org/wiki/Regular_expression">regular expression</a>. Enter one expression per line. Examples for medium ID detection:
 <ul class="nativeList">
        <li><code>(?&lt;ID&gt;[0-9]+)</code> detects a numeric ID.</li>
        <li><code>(?&lt;ID&gt;[0-9a-zA-Z]+)</code> detects an alphanumeric ID.</li>
                <item name="wcf.acp.bbcode.mediaProvider.title"><![CDATA[Media Providers]]></item>
                <item name="wcf.acp.bbcode.showButton"><![CDATA[Display button in WYSIWYG editor]]></item>
                <item name="wcf.acp.bbcode.wysiwygIcon"><![CDATA[Button Image]]></item>
-               <item name="wcf.acp.bbcode.wysiwygIcon.description"><![CDATA[The image must be placed inside the directory wcf/icon/ or use a <a href="{@$__wcf->getPath('wcf')}acp/dereferrer.php?url=http%3A%2F%2Ffontawesome.com%2Fv4.7.0%2Ficons%2F">FontAwesome</a>-icon, e.g. “fa-caret-square-o-up”.]]></item>
+               <item name="wcf.acp.bbcode.wysiwygIcon.description"><![CDATA[The image must be placed inside the directory wcf/icon/ or use a <a href="https://fontawesome.com/v4.7.0/icons/">FontAwesome</a>-icon, e.g. “fa-caret-square-o-up”.]]></item>
        </category>
        
        <category name="wcf.acp.box">
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.followingsOnline"><![CDATA[Users Online Followed by Active User]]></item>
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.pageCommentList"><![CDATA[Page Comments]]></item>
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.paidSubscriptions"><![CDATA[Paid Subscriptions]]></item>
+               <item name="wcf.acp.box.boxController.com.woltlab.wcf.profileCommentList"><![CDATA[Profile Comments]]></item>
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.recentActivityList"><![CDATA[Recent Activity]]></item>
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.registerButton"><![CDATA[Register Button]]></item>
                <item name="wcf.acp.box.boxController.com.woltlab.wcf.signedInAs"><![CDATA[Signed In As]]></item>
                <item name="wcf.acp.cronjob.edit"><![CDATA[Edit Cronjob]]></item>
                <item name="wcf.acp.cronjob.className"><![CDATA[PHP Class Name]]></item>
                <item name="wcf.acp.cronjob.timing"><![CDATA[Schedule]]></item>
-               <item name="wcf.acp.cronjob.intro"><![CDATA[Configuring cronjobs requires distinct knowledge of the crontab syntax on Unix based systems. More information about this topic can be obtained on the following web page: <a href="{@$__wcf->getPath('wcf')}acp/dereferrer.php?url={"http://www.unixgeeks.org/security/newbie/unix/cron-1.html"|rawurlencode}" class="externalURL">Newbie: Intro to cron</a>.]]></item>
+               <item name="wcf.acp.cronjob.intro"><![CDATA[Configuring cronjobs requires distinct knowledge of the crontab syntax on Unix based systems. More information about this topic can be obtained on the following web page: <a href="http://www.unixgeeks.org/security/newbie/unix/cron-1.html" class="externalURL">Newbie: Intro to cron</a>.]]></item>
                <item name="wcf.acp.cronjob.execute"><![CDATA[Run Cronjob]]></item>
                <item name="wcf.acp.cronjob.className.error.doesNotExist"><![CDATA[Unable to find the specified class.]]></item>
                <item name="wcf.acp.cronjob.timing.error.invalid"><![CDATA[Invalid time format.]]></item>
                <item name="wcf.acp.dataImport.data.com.woltlab.wcf.trophy.category"><![CDATA[Trophy categories]]></item>
                <item name="wcf.acp.dataImport.data.com.woltlab.wcf.trophy"><![CDATA[Trophies]]></item>
                <item name="wcf.acp.dataImport.data.com.woltlab.wcf.userTrophy"><![CDATA[Assigned trophies]]></item>
+               <item name="wcf.acp.dataImport.data.com.woltlab.wcf.reactionType"><![CDATA[Reaction Types]]></item>
                <item name="wcf.acp.dataImport.existingMapping.confirmMessage"><![CDATA[Do you really want to delete the existing import mappings?]]></item>
                <item name="wcf.acp.dataImport.existingMapping.notice"><![CDATA[There are import mappings created by a previous import process, these mappings are used to properly handle connections between data from the imported forum and this one. In case you have imported all the desired data, you can <a id="deleteMapping">delete</a> the mappings. It is strongly recommended to keep these mappings as long as there is still data to be imported now or in the future.]]></item>
                <item name="wcf.acp.dataImport.exporter"><![CDATA[Data Source]]></item>
                <item name="wcf.acp.devtools.project.add"><![CDATA[Add Project]]></item>
                <item name="wcf.acp.devtools.project.edit"><![CDATA[Edit Project]]></item>
                <item name="wcf.acp.devtools.project.delete.confirmMessage"><![CDATA[Do you really want to delete the project <span class="confirmationObject">{$object->name}</span>?]]></item>
-               <item name="wcf.acp.devtools.project.introduction"><![CDATA[Please read the <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://docs.woltlab.com/getting-started_quick-start.html#developer-tools'|rawurlencode}" class="externalURL">usage instructions</a> in the developer documentation.]]></item>
+               <item name="wcf.acp.devtools.project.introduction"><![CDATA[Please read the <a href="https://docs.woltlab.com/getting-started_quick-start.html#developer-tools" class="externalURL">usage instructions</a> in the developer documentation.]]></item>
                <item name="wcf.acp.devtools.project.list"><![CDATA[Projects]]></item>
                <item name="wcf.acp.devtools.project.name"><![CDATA[Name]]></item>
                <item name="wcf.acp.devtools.project.name.error.notUnique"><![CDATA[The name is already used by another project.]]></item>
                <item name="wcf.acp.devtools.project.sync.pageTitle"><![CDATA[Sync Data - {$object->name}]]></item>
                <item name="wcf.acp.devtools.pip.defaultFilename"><![CDATA[Search Pattern]]></item>
                <item name="wcf.acp.devtools.pip.error.notIdempotent"><![CDATA[This PIP does not support repeated imports and can only be processed in regular updates.]]></item>
+               <item name="wcf.acp.devtools.pip.error.noGuiSupport"><![CDATA[This PIP does not support managing entries via a graphical user interface.]]></item>
                <item name="wcf.acp.devtools.pip.notice"><![CDATA[Any existing instructions in the <kbd>package.xml</kbd> will be ignored; This allows the import of PIPs that have no specific instructions provided for them yet. Only the suggested default paths are recognized, with an additional support for application suffixes for <kbd>.tar</kbd>-archives (e. g. <kbd>files_wcf.tar</kbd>) are supported.]]></item>
                <item name="wcf.acp.devtools.pip.pluginName"><![CDATA[PIP identifier]]></item>
                <item name="wcf.acp.devtools.pip.showOnlyMatches"><![CDATA[Show valid PIPs only]]></item>
                <item name="wcf.acp.devtools.notificationTest.link"><![CDATA[Link]]></item>
                <item name="wcf.acp.devtools.notificationTest.link.exception"><![CDATA[Link Error Message]]></item>
                <item name="wcf.acp.devtools.notificationTest.links"><![CDATA[Links]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.add"><![CDATA[Add {$pip} Entry]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.add.pageTitle"><![CDATA[Add {$pip}{if $entryType !== null} ({$entryType}){/if} Entry - {$project->name}]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.button.add"><![CDATA[Add Entry]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.list"><![CDATA[{$pip}{if $entryType !== null} ({$entryType}){/if} Entries]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.list.pageTitle"><![CDATA[{$pip}{if $entryType !== null} ({$entryType}){/if} Entries - {$project->name}]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.edit"><![CDATA[Edit {$pip}{if $entryType !== null} ({$entryType}){/if} Entry]]></item>
+               <item name="wcf.acp.devtools.project.pip.entry.edit.pageTitle"><![CDATA[Edit {$pip}{if $entryType !== null} ({$entryType}){/if} Entry - {$project->name}]]></item>
+               <item name="wcf.acp.devtools.project.pip.list"><![CDATA[Package Installation Plugins]]></item>
+               <item name="wcf.acp.devtools.project.pip.list.pageTitle"><![CDATA[Package Installation Plugins - {$project->name}]]></item>
+               <item name="wcf.acp.devtools.project.pips"><![CDATA[PIPs]]></item>
+               <item name="wcf.acp.devtools.pip.showGuiSupportingPipsOnly"><![CDATA[Show PIPs supporting GUI only]]></item>
+               <item name="wcf.acp.devtools.pip.showGuiSupportingPipsOnly.description"><![CDATA[Show only PIPs that support managing entries via a graphical user interface.]]></item>
        </category>
        
        <category name="wcf.acp.email">
                <item name="wcf.acp.group.option.admin.user.canEditPassword"><![CDATA[Can edit user passwords]]></item>
                <item name="wcf.acp.group.option.admin.user.canEditUser"><![CDATA[Can edit users]]></item>
                <item name="wcf.acp.group.option.admin.user.canMailUser"><![CDATA[Can send emails to users]]></item>
+               <item name="wcf.acp.group.option.admin.user.canManageNotificationSettings"><![CDATA[Can edit default notification settings]]></item>
                <item name="wcf.acp.group.option.admin.user.canSearchUser"><![CDATA[Can search users]]></item>
                <item name="wcf.acp.group.option.category.admin"><![CDATA[Administrator Permissions]]></item>
                <item name="wcf.acp.group.option.category.admin.configuration"><![CDATA[Configuration]]></item>
                <item name="wcf.acp.group.option.user.tag.canViewTag"><![CDATA[Can view tags]]></item>
                <item name="wcf.acp.group.option.category.user.cms"><![CDATA[CMS]]></item>
                <item name="wcf.acp.group.option.admin.content.article.canManageArticle"><![CDATA[Can manage articles]]></item>
+               <item name="wcf.acp.group.option.admin.content.article.canManageOwnArticles"><![CDATA[Can manage own articles]]></item>
                <item name="wcf.acp.group.option.admin.content.article.canContributeArticle"><![CDATA[Can contribute articles]]></item>
                <item name="wcf.acp.group.option.admin.content.article.canManageCategory"><![CDATA[Can manage article categories]]></item>
                <item name="wcf.acp.group.option.admin.content.cms.canManageBox"><![CDATA[Can manage boxes]]></item>
                <item name="wcf.acp.group.option.admin.content.cms.canManageMedia"><![CDATA[Can manage media]]></item>
+               <item name="wcf.acp.group.option.admin.content.cms.canOnlyAccessOwnMedia"><![CDATA[Can only access own media]]></item>
                <item name="wcf.acp.group.option.admin.content.cms.canManagePage"><![CDATA[Can manage pages]]></item>
                <item name="wcf.acp.group.option.admin.content.cms.canUseMedia"><![CDATA[Can use media]]></item>
                <item name="wcf.acp.group.option.category.mod.cms"><![CDATA[CMS]]></item>
                <item name="wcf.acp.group.option.user.profile.coverPhoto.canSeeCoverPhotos"><![CDATA[Can view  users’ cover photos]]></item>
                <item name="wcf.acp.group.option.user.profile.coverPhoto.canUploadCoverPhoto"><![CDATA[Can upload their cover photo]]></item>
                <item name="wcf.acp.group.option.user.profile.coverPhoto.maxSize"><![CDATA[Maximum Image File Size]]></item>
+               <item name="wcf.acp.group.option.admin.content.reaction.canManageReactionType"><![CDATA[Can manage reaction types]]></item>
        </category>
        
        <category name="wcf.acp.index">
                <item name="wcf.acp.language.variables"><![CDATA[Phrases]]></item>
                <item name="wcf.acp.language.users"><![CDATA[Used by]]></item>
                <item name="wcf.acp.language.import"><![CDATA[Import Language]]></item>
-               <item name="wcf.acp.language.item.list"><![CDATA[Manage Phrases]]></item>
+               <item name="wcf.acp.language.item.list"><![CDATA[Phrases]]></item>
                <item name="wcf.acp.language.category"><![CDATA[Category]]></item>
                <item name="wcf.acp.language.item.value"><![CDATA[Content]]></item>
                <item name="wcf.acp.language.item.customValue"><![CDATA[Custom Value]]></item>
                <item name="wcf.acp.language.item.oldValue.description"><![CDATA[Your custom value was based on the original content that has changed{if $item->languageCustomItemDisableTime} on {$item->languageCustomItemDisableTime|date}{/if}.]]></item>
                <item name="wcf.acp.language.item.recentlyDisabledCustomValues"><![CDATA[Recently disabled customized values (past 7 days)]]></item>
                <item name="wcf.acp.language.item.hasRecentlyDisabledCustomValues"><![CDATA[{if $recentlyDisabledCustomValues == 1}One{else}{#$recentlyDisabledCustomValues}{/if} customized {if $recentlyDisabledCustomValues == 1}phrase has been{else}phrases have been{/if} <a href="{link controller='LanguageItemList' hasRecentlyDisabledCustomValue=1}{/link}">automatically disabled</a> recently.]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID"><![CDATA[Language Category]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.mode"><![CDATA[Language Category Mode]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.mode.automatic"><![CDATA[Determined Automatically Based on Identifier]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.mode.new"><![CDATA[New Language Category]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.mode.selection"><![CDATA[Manual Selection]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.description"><![CDATA[The phrase will be added to the selected language category.]]></item>
+               <item name="wcf.acp.language.item.languageItem"><![CDATA[Phrase Identifier]]></item>
+               <item name="wcf.acp.language.item.languageItem.description"><![CDATA[The phrase identifier consists of at least three segments that are separated by dots. Each segment may only contain the following characters: <code>[A-z0-9-_]</code>.]]></item>
+               <item name="wcf.acp.language.item.languageItem.error.format"><![CDATA[The entered identifier is invalid.]]></item>
+               <item name="wcf.acp.language.item.languageCategoryID.mode.error.automaticImpossible"><![CDATA[The language category cannot be determined automatically for the entered phrase identifier. You have to either change the phrase identifier or manually select a language category.]]></item>
+               <item name="wcf.acp.language.item.languageItem.error.prefixMismatch"><![CDATA[The entered identifier does not begin with the selected language category.]]></item>
+               <item name="wcf.acp.language.item.languageItem.error.notUnique"><![CDATA[The entered identifier is already used by a different phrase.]]></item>
+               <item name="wcf.acp.language.item.isCustomLanguageItem"><![CDATA[Manually added phrases]]></item>
+               <item name="wcf.acp.language.item.delete.confirmMessage"><![CDATA[Do you really want to the delete the phrase? It will be deleted for all languages.]]></item>
+               <item name="wcf.acp.language.item.languageCategory"><![CDATA[Language Category Identifier]]></item>
+               <item name="wcf.acp.language.item.languageCategory.description"><![CDATA[The entered language category identifier is used to group phrases.]]></item>
+               <item name="wcf.acp.language.item.languageCategory.error.notUnique"><![CDATA[This language category identifier is already used by an existing language category.]]></item>
+               <item name="wcf.acp.language.item.languageCategory.error.tooFewSegments"><![CDATA[The entered category contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
        </category>
        
        <category name="wcf.acp.masterPassword">
                <item name="wcf.acp.menu.link.cronjob.list"><![CDATA[Cronjobs]]></item>
                <item name="wcf.acp.menu.link.language"><![CDATA[Languages]]></item>
                <item name="wcf.acp.menu.link.language.import"><![CDATA[Import Language]]></item>
-               <item name="wcf.acp.menu.link.language.item.list"><![CDATA[Manage Phrases]]></item>
+               <item name="wcf.acp.menu.link.language.item.list"><![CDATA[Phrases]]></item>
                <item name="wcf.acp.menu.link.language.list"><![CDATA[Languages]]></item>
                <item name="wcf.acp.menu.link.language.multilingualism"><![CDATA[Multilingualism]]></item>
                <item name="wcf.acp.menu.link.log"><![CDATA[Logs]]></item>
                <item name="wcf.acp.menu.link.devtools.project.add"><![CDATA[Add Project]]></item>
                <item name="wcf.acp.menu.link.devtools.project.list"><![CDATA[Projects]]></item>
                <item name="wcf.acp.menu.link.devtools.notificationTest"><![CDATA[Notification Test]]></item>
+               <item name="wcf.acp.menu.link.log.modification"><![CDATA[Global Modification Log]]></item>
+               <item name="wcf.acp.menu.link.reactionType"><![CDATA[Reaction]]></item>
+               <item name="wcf.acp.menu.link.reactionType.list"><![CDATA[Reaction Types]]></item>
+               <item name="wcf.acp.menu.link.reactionType.add"><![CDATA[Add Reaction Type]]></item>
+               <item name="wcf.acp.menu.link.reactionType.edit"><![CDATA[Edit Reaction Type]]></item>
+               <item name="wcf.acp.menu.link.language.item.add"><![CDATA[Add Phrase]]></item>
+       </category>
+       
+       <category name="wcf.acp.modificationLog">
+               <item name="wcf.acp.modificationLog.list"><![CDATA[Global Modification Log]]></item>
+               <item name="wcf.acp.modificationLog.action"><![CDATA[Action]]></item>
+               <item name="wcf.acp.modificationLog.action.all"><![CDATA[All Actions]]></item>
+               <item name="wcf.acp.modificationLog.affectedObject"><![CDATA[Affected Object]]></item>
+               <item name="wcf.acp.modificationLog.affectedObject.id"><![CDATA[ID: {@$modificationLog->objectID}]]></item>
+               <item name="wcf.acp.modificationLog.affectedObject.unknown"><![CDATA[(Does not exist anymore)]]></item>
+               <item name="wcf.acp.modificationLog.package.all"><![CDATA[All Sources]]></item>
+               <item name="wcf.acp.modificationLog.time.afterDate"><![CDATA[After the date]]></item>
+               <item name="wcf.acp.modificationLog.time.beforeDate"><![CDATA[Before the date]]></item>
+               <item name="wcf.acp.modificationLog.unsupportedObjectTypes"><![CDATA[Some types are currently not supported and require changes to be made by the vendor.]]></item>
        </category>
        
        <category name="wcf.acp.notice">
                <item name="wcf.acp.option.http_enable_gzip"><![CDATA[Enable gzip-compression]]></item>
                <item name="wcf.acp.option.http_enable_gzip.description"><![CDATA[Compresses content transferred to users, it also reduces traffic and page load times. It does not affect files, e.g. images.]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options"><![CDATA[Disallow embedding in a frame]]></item>
-               <item name="wcf.acp.option.http_send_x_frame_options.description"><![CDATA[Sends the <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://en.wikipedia.org/wiki/Clickjacking'|rawurlencode}" class="externalURL">“X-Frame-Options”</a> header to prevent 3rd party sites from embedding this site in a frame (sends “SAMEORIGIN”).]]></item>
+               <item name="wcf.acp.option.http_send_x_frame_options.description"><![CDATA[Sends the <a href="https://en.wikipedia.org/wiki/Clickjacking" class="externalURL">“X-Frame-Options”</a> header to prevent 3rd party sites from embedding this site in a frame (sends “SAMEORIGIN”).]]></item>
                <item name="wcf.acp.option.image_adapter_type"><![CDATA[Graphics Library]]></item>
                <item name="wcf.acp.option.image_adapter_type.gd"><![CDATA[Use GD Graphics Library (default)]]></item>
                <item name="wcf.acp.option.image_adapter_type.imagick"><![CDATA[Use ImageMagick]]></item>
                <item name="wcf.acp.option.show_version_number"><![CDATA[Display version number in copyright notice]]></item>
                <item name="wcf.acp.option.enable_debug_mode"><![CDATA[Enable debug mode]]></item>
                <item name="wcf.acp.option.enable_debug_mode.description"><![CDATA[Enables extensive error messages, it should always be disabled in production environments!]]></item>
+               <item name="wcf.acp.option.enable_production_debug_mode"><![CDATA[Problem analysis in production environments]]></item>
+               <item name="wcf.acp.option.enable_production_debug_mode.description"><![CDATA[Appends the current URL to database queries to assist looking them up in the database server’s log files.]]></item>
                <item name="wcf.acp.option.external_link_rel_nofollow"><![CDATA[Append the attribute “rel="nofollow"” to all external links]]></item>
                <item name="wcf.acp.option.external_link_rel_nofollow.description"><![CDATA[The attribute “rel="nofollow"” tells search engines to disregard external links.]]></item>
                <item name="wcf.acp.option.external_link_target_blank"><![CDATA[Open external links in a new window]]></item>
                <item name="wcf.acp.option.edit_history_expiration"><![CDATA[Storage Time Period]]></item>
                <item name="wcf.acp.option.edit_history_expiration.description"><![CDATA[Content in the edit history will be removed after the following days. Use 0 to disable.]]></item>
                <item name="wcf.acp.option.github_public_key"><![CDATA[GitHub Client ID]]></item>
-               <item name="wcf.acp.option.github_public_key.description"><![CDATA[You can obtain both your Client ID and Client Secret at <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://github.com/settings/developers'|rawurlencode}" class="externalURL">GitHub</a>. The Callback URL is: {link controller="GithubAuth" forceFrontend=true}{/link}]]></item>
+               <item name="wcf.acp.option.github_public_key.description"><![CDATA[You can obtain both your Client ID and Client Secret at <a href="https://github.com/settings/developers" class="externalURL">GitHub</a>. The Callback URL is: {link controller="GithubAuth" forceFrontend=true}{/link}]]></item>
                <item name="wcf.acp.option.github_private_key"><![CDATA[GitHub Client Secret]]></item>
                <item name="wcf.acp.option.twitter_public_key"><![CDATA[Twitter API key]]></item>
-               <item name="wcf.acp.option.twitter_public_key.description"><![CDATA[You can obtain both your API key and API secret at <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://dev.twitter.com/apps'|rawurlencode}" class="externalURL">Twitter</a>. The Callback URL is: {link controller="TwitterAuth" forceFrontend=true}{/link}]]></item>
+               <item name="wcf.acp.option.twitter_public_key.description"><![CDATA[You can obtain both your API key and API secret at <a href="https://dev.twitter.com/apps" class="externalURL">Twitter</a>. The Callback URL is: {link controller="TwitterAuth" forceFrontend=true}{/link}]]></item>
                <item name="wcf.acp.option.twitter_private_key"><![CDATA[Twitter API secret]]></item>
                <item name="wcf.acp.option.facebook_public_key"><![CDATA[Facebook APP-ID]]></item>
-               <item name="wcf.acp.option.facebook_public_key.description"><![CDATA[You can obtain your APP-ID and Application Secret at <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://developers.facebook.com/apps'|rawurlencode}" class="externalURL">Facebook</a>. The OAuth redirect URI is: {link controller="FacebookAuth" forceFrontend=true}{/link}]]></item>
+               <item name="wcf.acp.option.facebook_public_key.description"><![CDATA[You can obtain your APP-ID and Application Secret at <a href="https://developers.facebook.com/apps" class="externalURL">Facebook</a>. The OAuth redirect URI is: {link controller="FacebookAuth" forceFrontend=true}{/link}]]></item>
                <item name="wcf.acp.option.facebook_private_key"><![CDATA[Facebook Application Secret]]></item>
                <item name="wcf.acp.option.google_public_key"><![CDATA[Google Client ID]]></item>
-               <item name="wcf.acp.option.google_public_key.description"><![CDATA[You can obtain your Client ID and Client Secret at <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://code.google.com/apis/console/'|rawurlencode}" class="externalURL">Google</a>. The Redirect-URI is: {link controller="GoogleAuth" forceFrontend=true}{/link}]]></item>
+               <item name="wcf.acp.option.google_public_key.description"><![CDATA[You can obtain your Client ID and Client Secret at <a href="https://code.google.com/apis/console/" class="externalURL">Google</a>. The Redirect-URI is: {link controller="GoogleAuth" forceFrontend=true}{/link}]]></item>
                <item name="wcf.acp.option.google_private_key"><![CDATA[Google Client Secret]]></item>
                <item name="wcf.acp.option.category.dashboard"><![CDATA[Dashboard]]></item>
                <item name="wcf.acp.option.category.dashboard.content"><![CDATA[Content Area]]></item>
                <item name="wcf.acp.option.user_cleanup_profile_visitor_lifetime.description"><![CDATA[Profile visitors will be removed after the following days.]]></item>
                <item name="wcf.acp.option.category.message.general.likes"><![CDATA[Likes System]]></item>
                <item name="wcf.acp.option.module_like"><![CDATA[Likes system]]></item>
-               <item name="wcf.acp.option.like_allow_for_own_content"><![CDATA[Users can like their content]]></item>
+               <item name="wcf.acp.option.like_allow_for_own_content"><![CDATA[Users can react to their own content]]></item>
                <item name="wcf.acp.option.like_enable_dislike"><![CDATA[Users can dislike content]]></item>
                <item name="wcf.acp.option.like_show_summary"><![CDATA[Display likes summary]]></item>
                <item name="wcf.acp.option.module_user_profile_wall"><![CDATA[User profile wall]]></item>
                <item name="wcf.acp.option.show_update_notice_frontend"><![CDATA[Display a notice for outstanding updates on the frontend]]></item>
                <item name="wcf.acp.option.url_omit_index_php"><![CDATA[Enable url-rewrite]]></item>
                <item name="wcf.acp.option.url_omit_index_php.button.runTestAgain"><![CDATA[Rerun Test]]></item>
-               <item name="wcf.acp.option.url_omit_index_php.description"><![CDATA[Attention! This option requires a rewrite module installed on your webserver and an appropriate configuration; It will not work without any prior configuration applied by you! Please read the following article for instructions: <a href="{@$__wcf->getPath()}acp/dereferrer.php?url=https%3A%2F%2Fwww.woltlab.com%2Farticle%2F25-setting-up-user-friendly-urls%2F" class="externalURL">Setting up user friendly URLs</a>. Enabling this option will rewrite URLs into a better readable representation. Examples: 
+               <item name="wcf.acp.option.url_omit_index_php.description"><![CDATA[Attention! This option requires a rewrite module installed on your webserver and an appropriate configuration; It will not work without any prior configuration applied by you! Please read the following article for instructions: <a href="https://www.woltlab.com/article/25-setting-up-user-friendly-urls/" class="externalURL">Setting up user friendly URLs</a>. Enabling this option will rewrite URLs into a better readable representation. Examples: 
 <ul class="nativeList">
 <li>the link “https://example.com/index.php?thread/1-hello-i-am-john-doe/” will turn into “https://example.com/thread/1-hello-i-am-john-doe/”</li>
 <li>the link “https://example.com/index.php?members-list/” will turn into “https://example.com/members-list/”</li>
                <item name="wcf.acp.option.url_omit_index_php.test.failure"><![CDATA[The test has failed.]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.failure.description"><![CDATA[The webserver cannot handle rewrites or it has not been configured correctly.<br>
 <br>
-Please follow the instructions described in <a href="{@$__wcf->getPath()}acp/dereferrer.php?url=https%3A%2F%2Fwww.woltlab.com%2Farticle%2F25-setting-up-user-friendly-urls%2F" class="externalURL">Setting up user friendly URLs</a> or contact your hosting provider for assistance.]]></item>
+Please follow the instructions described in <a href="https://www.woltlab.com/article/25-setting-up-user-friendly-urls/" class="externalURL">Setting up user friendly URLs</a> or contact your hosting provider for assistance.]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.running"><![CDATA[The test is currently running &hellip;]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.status"><![CDATA[Test Result]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.status.failure"><![CDATA[Failed]]></item>
@@ -1337,7 +1400,7 @@ Please follow the instructions described in <a href="{@$__wcf->getPath()}acp/der
                <item name="wcf.acp.option.signature_secret"><![CDATA[Secret Key]]></item>
                <item name="wcf.acp.option.signature_secret.description"><![CDATA[A secret key that serves the purpose of validating data to prevent tampering. Keep this key secret! A random key was generated for you during installation, you don’t need to change it. Note: This key must be at least 15 characters long.]]></item>
                <item name="wcf.acp.option.gravatar_default_type"><![CDATA[Default Gravatar Type]]></item>
-               <item name="wcf.acp.option.gravatar_default_type.description"><![CDATA[The <a class="externalURL" href="{@$__wcf->getPath()}acp/dereferrer.php?url=https://de.gravatar.com/site/implement/images/#default-image">default Gravatar type</a> used if no matching Gravatar was found.]]></item>
+               <item name="wcf.acp.option.gravatar_default_type.description"><![CDATA[The <a class="externalURL" href="https://de.gravatar.com/site/implement/images/#default-image">default Gravatar type</a> used if no matching Gravatar was found.]]></item>
                <item name="wcf.acp.option.gravatar_default_type.404"><![CDATA[No default Gravatar]]></item>
                <item name="wcf.acp.option.gravatar_default_type.identicon"><![CDATA[Identicon]]></item>
                <item name="wcf.acp.option.gravatar_default_type.wavatar"><![CDATA[Wavatar]]></item>
@@ -1358,7 +1421,7 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.option.paid_subscription_tos_url"><![CDATA[Terms of Service URL]]></item>
                <item name="wcf.acp.option.category.general.payment.paidSubscription"><![CDATA[Paid Subscriptions]]></item>
                <item name="wcf.acp.option.google_maps_api_key"><![CDATA[Browser API Key]]></item>
-               <item name="wcf.acp.option.google_maps_api_key.description"><![CDATA[Google provides a detailed description on how to get an API key <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'https://developers.google.com/maps/documentation/javascript/get-api-key'|rawurlencode}" class="externalURL">here</a>.]]></item>
+               <item name="wcf.acp.option.google_maps_api_key.description"><![CDATA[Google provides a detailed description on how to get an API key <a href="https://developers.google.com/maps/documentation/javascript/get-api-key" class="externalURL">here</a>.]]></item>
                <item name="wcf.acp.option.suffix.chars"><![CDATA[Chars]]></item>
                <item name="wcf.acp.option.suffix.days"><![CDATA[Days]]></item>
                <item name="wcf.acp.option.suffix.hours"><![CDATA[Hours]]></item>
@@ -1385,8 +1448,9 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.option.message_force_secure_images"><![CDATA[Allow secure images only]]></item>
                <item name="wcf.acp.option.message_force_secure_images.description"><![CDATA[Images may only be embedded using the encrypted “https”-protocol. Images in already existing messages will be force-rewritten to use the secure protocol.]]></item>
                <item name="wcf.acp.option.module_image_proxy"><![CDATA[Enable image proxy]]></item>
-               <item name="wcf.acp.option.image_proxy_expiration"><![CDATA[Storage Time Period]]></item>
+               <item name="wcf.acp.option.image_proxy_expiration"><![CDATA[Maximum Storage Time Period]]></item>
                <item name="wcf.acp.option.image_proxy_insecure_only"><![CDATA[Store images from insecure sources only]]></item>
+               <item name="wcf.acp.option.image_proxy_enable_prune"><![CDATA[Remove Cached Images Regularly]]></item>
                <item name="wcf.acp.option.image_proxy_host_whitelist"><![CDATA[Image proxy whitelist]]></item>
                <item name="wcf.acp.option.image_proxy_host_whitelist.description"><![CDATA[The listed domains will not be handled by the image proxy, the current domain is implicitly added. Hostnames are exact matches only, a leading wildcard can be used to exclude an entire domain: <kbd>*.example.com</kbd> matches <kbd>example.com</kbd> and subdomains such as <kbd>foo.example.com</kbd> or <kbd>www.example.com</kbd>.<br>Enter one domain per line only.]]></item>
                <item name="wcf.acp.option.share_buttons_providers"><![CDATA[Share Button Providers]]></item>
@@ -1416,7 +1480,7 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.option.visitor_use_tiny_build"><![CDATA[Enable accelerated guest view (experimental)]]></item>
                <item name="wcf.acp.option.visitor_use_tiny_build.description"><![CDATA[Enables a specialized view mode for guests and search engines alike, providing greatly reduced JavaScript files to achieve faster loading and page rendering.<br><strong>Warning:</strong> This mode is highly restricted and reduces the abilities of guests to interact with your site, such as creating new content. Please review your installed plugins before enabling to see if they are compatible with this setting.]]></item>
                <item name="wcf.acp.option.fb_share_app_id"><![CDATA[Facebook App ID]]></item>
-               <item name="wcf.acp.option.fb_share_app_id.description"><![CDATA[You can obtain the app ID from your <a href="{@$__wcf->getPath('wcf')}acp/dereferrer.php?url=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fapps%2Fregister%3Flocale%3Den_US">app’s dashboard</a>, and is used with the Open Graph tags for sharing.]]></item>
+               <item name="wcf.acp.option.fb_share_app_id.description"><![CDATA[You can obtain the app ID from your <a href="https://developers.facebook.com/docs/apps/register?locale=en_US" class="externalURL">app’s dashboard</a>, and is used with the Open Graph tags for sharing.]]></item>
                <item name="wcf.acp.option.enable_polling"><![CDATA[Enable Background Notifications]]></item>
                <item name="wcf.acp.option.enable_polling.description"><![CDATA[Periodically retrieves new notifications in the background, requests are dispatched every 5 minutes. Interval decreases down to 15 minutes on inactivity.]]></item>
                <item name="wcf.acp.option.enable_desktop_notifications"><![CDATA[Enable Desktop Notifications]]></item>
@@ -1437,6 +1501,7 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.option.module_user_cover_photo"><![CDATA[Enable user cover photos]]></item>
                <item name="wcf.acp.option.module_user_cover_photo.description"><![CDATA[Enables the display and upload of user profile cover photos.]]></item>
                <item name="wcf.acp.option.image_allow_external_source"><![CDATA[Allow images from external sites]]></item>
+               <item name="wcf.acp.option.message_enable_toc"><![CDATA[Enable the table of contents]]></item>
        </category>
        
        <category name="wcf.acp.customOption">
@@ -1607,6 +1672,14 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.package.validation.errorCode.14"><![CDATA[This package was created for {if $isOlderVersion}an older{else}a newer{/if} version of WoltLab Suite and is not compatible.]]></item>
                <item name="wcf.acp.package.validation.errorCode.15"><![CDATA[This package does not contain any data on API compatibility, the installation is prevented while the developer tools are enabled.]]></item>
                <item name="wcf.acp.package.validation.failed"><![CDATA[The package cannot be installed, please review the validation results below.]]></item>
+               <item name="wcf.acp.package.evaluation.expired"><![CDATA[The evaluation period of <strong>{$packageName}</strong> has expired. For a legal use of this software, please update to the latest available version.{if $pluginStoreFileID || $isWoltLab}<br>The latest version can be purchased quickly and securely <strong>{if $pluginStoreFileID}<a href="https://pluginstore.woltlab.com/file/{$pluginStoreFileID}/">in the WoltLab Plugin-Store</a>{else}<a href="https://www.woltlab.com/purchase/">on WoltLab.com</a>{/if}</strong>.{/if}]]></item>
+               <item name="wcf.acp.package.evaluation.pending"><![CDATA[The evaluation period of the apps listed below will expire on <strong>{$evaluationEndDate|plainTime}</strong> ({@$evaluationEndDate|dateDiff:TIME_NOW:true}). The apps will automatically disable themselves after this date and become unusable, you'll need to install the latest versions of the apps to active them again.
+<ul class="nativeList">
+       {foreach from=$pendingApps item=pendingApp}
+               <li>{$pendingApp}</li>
+       {/foreach}
+</ul>
+If you have <strong>already bought the licenses for the listed apps</strong>, then it is enough to install all upcoming updates. <strong>The evaluation copy will automatically be upgraded to the full version.</strong>]]></item>
        </category>
        
        <category name="wcf.acp.paidSubscription">
@@ -1673,6 +1746,502 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.pluginStore.purchasedItems.wcfMajorRelease"><![CDATA[Update-Server for “{$wcfMajorRelease}”]]></item>
        </category>
        
+       <category name="wcf.acp.pip">
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.data.title"><![CDATA[Ad Location Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.categoryName"><![CDATA[Category]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.categoryName.description"><![CDATA[Ad locations are grouped by their category in the ad location selection when creating and editing ads. The category consists of at least four segments that are separated by dots. Each segment may only contain the following characters: <code>[A-z0-9-_]</code>.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.categoryName.error.tooFewSegments"><![CDATA[The entered category only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.cssClassName"><![CDATA[CSS Classes]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.cssClassName.description"><![CDATA[The entered comma-separated CSS classes are assigned to the element that wraps all ads at the specific location. ]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.cssClassName.error.invalid"><![CDATA[The following CSS classes are invalid: {implode from=$invalidClasses item=invalidClass}<code>{$invalidClass}</code>{/implode}.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.page"><![CDATA[Page]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.adLocation.page.description"><![CDATA[Page on which the ad location is positioned.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.attachment.objectType.data.title"><![CDATA[Attachment Type Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.attachment.objectType.private"><![CDATA[Attachments are Private]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.attachment.objectType.private.description"><![CDATA[Private attachments are ignored by the attachment management in the ACP.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.bulkProcessing.user.action.data.title"><![CDATA[User Bulk Processing Action Data]]></item>
+               <item name="wcf.acp.pip.objectType.bulkProcessing.action"><![CDATA[Action]]></item>
+               <item name="wcf.acp.pip.objectType.bulkProcessing.action.description"><![CDATA[Unique textual identifier of the bulk processing action that may only contain letters and must start with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.objectType.bulkProcessing.action.error.format"><![CDATA[The entered action is invalid.]]></item>
+               <item name="wcf.acp.pip.objectType.bulkProcessing.action.options.description"><![CDATA[At least one of the entered options has to be enabled for the bulk processing action to be available. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.objectType.bulkProcessing.action.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to execute the action. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.bulkProcessing.user.condition.data.title"><![CDATA[User Bulk Processing Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.category.data.title"><![CDATA[Category Type Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.category.defaultPermission"><![CDATA[Category Default Permission]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.category.defaultPermission.description"><![CDATA[This value is used for users for which no category-specific permission value has been set (either directly for the users or indirectly for their user groups).]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.clipboardItem.data.title"><![CDATA[Clipboard Item Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.clipboardItem.listClassName"><![CDATA[Database Object List Class Name]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.clipboardItem.listClassName.description"><![CDATA[The entered class must extend <code>wcf\data\DatabaseObjectList</code> and is used for fetching the selected objects on which a clipboard action will be executed.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.condition.ad.data.title"><![CDATA[Ad Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.condition.notice.data.title"><![CDATA[Notice Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.condition.trophy.data.title"><![CDATA[Trophy Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.condition.userGroupAssignment.data.title"><![CDATA[User Group Asssignment Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.condition.userSearch.data.title"><![CDATA[User Search Condition Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.data.title"><![CDATA[Notification Object Type Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.category"><![CDATA[Category]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.category.description"><![CDATA[The category is used to group events on the notification settings page. The category consists of at least three segments that are separated by dots. Each segment may only contain the following characters: [A-z0-9-_].]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.category.error.tooFewSegments"><![CDATA[The category only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.rebuildData.data.title"><![CDATA[Rebuild Data Worker Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.rebuildData.niceValue"><![CDATA[Nice Value]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.rebuildData.niceValue.description"><![CDATA[The nice value is used to determine the order in which the rebuild data workers are shown and thus in which order they should be executed. Workers with lower nice value are shown first.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.searchableObjectType.data.title"><![CDATA[Searchable Object Type Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.searchableObjectType.searchIndex"><![CDATA[Search Index Database Table]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.searchableObjectType.searchIndex.description"><![CDATA[Name of the database table containing the search index. The database table will be automatically created by the system. For all applications, <code>app1_</code> will be replaced with <code>appN_</code> in which <code>app</code> is the abbreviation of the relevant application and <code>N</code> is the value of <code>WCF_N</code>.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.searchableObjectType.searchIndex.error.invalid"><![CDATA[The entered database table name is invalid.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.searchableObjectType.searchIndex.error.unknownApp"><![CDATA[No app with the abbreviation <code>{@$app}</code> is installed.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.data.title"><![CDATA[Sitemap Object Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.priority"><![CDATA[Priority]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.priority.description"><![CDATA[The priority tells crawlers which of your website’s pages you consider more important than the rest.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.changeFreq"><![CDATA[Change Frequency]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.changeFreq.description"><![CDATA[The change frequency tells crawlers how often a page changes on average.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.rebuildTime"><![CDATA[Rebuild Time]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.sitemap.object.rebuildTime.description"><![CDATA[After the entered time interval, the sitemap will be rebuilt by the system.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.data.title"><![CDATA[Daily Statistics Handler Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.categoryName"><![CDATA[Category]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.categoryName.description"><![CDATA[Daily statistics handler are grouped by their category on the stats page. The category consists of at least three segments that are separated by dots. Each segment may only contain the following characters: <code>[A-z0-9-_]</code>.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.categoryName.error.tooFewSegments"><![CDATA[The entered category only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.isDefault"><![CDATA[Default Daily Statistics Handler]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.isDefault.description"><![CDATA[Default daily statistics handler are pre-selected when loading the stats page.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.tagging.taggableObject.data.title"><![CDATA[Taggable Object Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.tagging.taggableObject.options.description"><![CDATA[At least one of the entered options has to be enabled the list of all objects of this type with a specific tag to be available. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.tagging.taggableObject.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to see the list of all objects of this type with a specific tag. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.activityPointEvent.data.title"><![CDATA[User Activity Event Points Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.activityPointEvent.points"><![CDATA[Points]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.activityPointEvent.points.description"><![CDATA[Number of points the user is awarded for the event.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.data.title"><![CDATA[Version Tracker Object Type Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tableName"><![CDATA[Database Table With Original Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tableName.description"><![CDATA[Name of the database table containg the original data whose different version will be tracked. For all applications, <code>app1_</code> will be replaced with <code>appN_</code> in which <code>app</code> is the abbreviation of the relevant application and <code>N</code> is the value of <code>WCF_N</code>.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tableName.error.nonExistent"><![CDATA[The database table <code>{$tableName}</code> does not exist.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tablePrimaryKey"><![CDATA[Database Table Primary Key Column]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tablePrimaryKey.description"><![CDATA[Name of the column containing the primary key of the database table containg the original data whose different version will be tracked.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tablePrimaryKey.error.nonExistent"><![CDATA[The entered column does not exist in the database table entered above.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tablePrimaryKey.error.noPrimaryColumn"><![CDATA[The entered column has no primary key.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionObject"><![CDATA[Conditioned Object Identifier]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionObject.description"><![CDATA[The object type-alike identifier of the object this condition is related with is used to group large lists of conditions into logical groups.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionObject.error.tooFewSegments"><![CDATA[The entered identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionGroup"><![CDATA[Condition Group]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionGroup.description"><![CDATA[The condition group is used to group conditions with the same group identifier together into, generally, one tab. The condition group may only consist of letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.conditionGroup.error.format"><![CDATA[The entered condition group is invalid.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.integer.maxValue"><![CDATA[Maximum Value]]></item>
+               <item name="wcf.acp.pip.objectType.condition.integer.maxValue.description"><![CDATA[When setting up the condition, the value for this condition may not be greater than the entered value.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.integer.minValue"><![CDATA[Minimum Value]]></item>
+               <item name="wcf.acp.pip.objectType.condition.integer.minValue.description"><![CDATA[When setting up the condition, the value for this condition may not be less than the entered value.]]></item>
+               <item name="wcf.acp.pip.objectType.condition.userGroup.includeGuests"><![CDATA[Include Guest User Group]]></item>
+               <item name="wcf.acp.pip.objectType.condition.userGroup.includeGuests.description"><![CDATA[When setting up the condition, the guest user group can also be selected.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName"><![CDATA[Object Type Definition]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.acl.description"><![CDATA[This object type definition is used to register types of objects for which ACL is available. ACL (Access control list) is used to set up (multiple) user and user group permissions for a specific object.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.acl.simple.description"><![CDATA[This object type definition is used to register types of objects for which simple ACL is available. Simple ACL (Access control list) is used to set up <strong>one</strong> yes/no permission user and user group permissions for a specific object.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.adLocation.description"><![CDATA[This object type definition is used to register locations at which ads can be displayed.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.attachment.objectType.description"><![CDATA[This object type definition is used to register types of objects that support attaching files to them.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.box.articleList.condition.description"><![CDATA[This object type definition is used to register available conditions/settings for boxes listing articles to determine which articles are shown in the box.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.box.recentActivityList.condition.description"><![CDATA[This object type definition is used to register available conditions/settings for boxes listing recent activities to determine which recent activities are shown in the box.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.box.userTrophyList.condition.description"><![CDATA[This object type definition is used to register available conditions/settings for boxes listing user trophies to determine which user trophies are shown in the box.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.boxController.description"><![CDATA[This object type definition is used to register box controllers that provide dynamic content based on the specific settings of the box.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.bulkProcessableObject.description"><![CDATA[This object type definition is used to register types of objects that support the bulk processing API with which a specific action can be executed on a list of object that fulfill certain conditions.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.bulkProcessing.user.action.description"><![CDATA[This object type definition is used to register actions that can be executed when processing users in bulk.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.bulkProcessing.user.condition.description"><![CDATA[This object type definition is used to register conditions for users that are processed in bulk.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.captcha.description"><![CDATA[This object type definition is used to register captcha types that administrators are able to select to protect their sites.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.category.description"><![CDATA[This object type definition is used to register types of objects that can/must be categorized.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.clipboardItem.description"><![CDATA[This object type definition is used to register clipboard items that enable users to execute actions on multiple objects that were selected via checkboxes.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.collapsibleContent.description"><![CDATA[This object type definition is used to register content that users are able to collapse persistently.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.comment.commentableContent.description"><![CDATA[This object type definition is used to register objects that can be commented.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.condition.ad.description"><![CDATA[This object type definition is used to register available conditions/settings for ads used to determine whether a specific ad is shown.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.condition.notice.description"><![CDATA[This object type definition is used to register available conditions/settings for notices used to determine whether a specific notice is shown.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.condition.trophy.description"><![CDATA[This object type definition is used to register available conditions/settings for trophies used to determine whether a specific trophy is awarded.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.condition.userGroupAssignment.description"><![CDATA[This object type definition is used to register conditions/settings for user group assignments used to determine whether a specific user is assigned to the user group.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.condition.userSearch.description"><![CDATA[This object type definition is used to register conditions/settings used when searching for users.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.deletedContent.description"><![CDATA[This object type definition is used to register types of objects that can be deleted and whose deleted objects will be shown in a specific list of deleted contents accessible for moderators.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.edit.historySavingObject.description"><![CDATA[This object type definition is used to register messages of which different versions can be tracked using the edit history API.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.exporter.description"><![CDATA[This object type definition is used to register exporters that export data from other software and import it into WoltLab Suite Core.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.importer.description"><![CDATA[This object type definition is used to register importers for specific types of objects.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.label.object.description"><![CDATA[This object type definition is used to register types of objects to which labels can be assigned.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.label.objectType.description"><![CDATA[This object type definition is used to register types of objects for which labels can be set up in the ACP.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.like.likeableObject.description"><![CDATA[This object type definition is used to register types of objects that can be liked (and disliked).]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.message.description"><![CDATA[This object type definition is used to register messages that support the WYSIWYG editor.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.message.embeddedObject.description"><![CDATA[This object type definition is used to register types of messages in that other objects like media can be embedded.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.message.quote.description"><![CDATA[This object type definition is used to register types of messages that can be quoted.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.moderation.activation.description"><![CDATA[This object type definition is used to register types of objects that be enabled and disabled. For disabled objects, a moderation queue entry is created.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.moderation.report.description"><![CDATA[This object type definition is used to register types of objects that can be reported. For reported objects, a moderation queue entry is created.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.moderation.type.description"><![CDATA[This object type definition is used to register “states” of objects so that for objects in that state, a moderation queue entry is created.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.modifiableContent.description"><![CDATA[This object type definition is used to register types of objects for which modifications can be logged and accessed via a chronological modification list.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.notification.objectType.description"><![CDATA[This object type definition is used to register types of objects for which notifications can be sent.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.payment.method.description"><![CDATA[This object type definition is used to register payment methods used, for example, for subscriptions to user groups.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.payment.type.description"><![CDATA[This object type definition is used to register types of objects for which payment is possible like subscriptions to user groups.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.poll.description"><![CDATA[This object type definition is used to register types of objects that support polls.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.rebuildData.description"><![CDATA[This object type definition is used to register workers used to rebuild a specific type of data, for example, after a data import.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.searchableObjectType.description"><![CDATA[This object type definition is used to register objects that be searched.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.sitemap.object.description"><![CDATA[This object type definition is used to register types of objects for which a sitemap will be created.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.statDailyHandler.description"><![CDATA[This object type definition is used to register handlers that create specific daily stats.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.tagging.taggableObject.description"><![CDATA[This object type definition is used to register types of objects that can be tagged.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.user.activityPointEvent.description"><![CDATA[This object type definition is used to register events for which users are awarded activity points.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.user.objectWatch.description"><![CDATA[This object type definition is used to register types of objects that can be watched/subscribed to resulting in notifications for updates of the watched/subscribed object.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.user.recentActivityEvent.description"><![CDATA[This object type definition is used to register events for which a recent activity entry can be created.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.versionTracker.objectType.description"><![CDATA[This object type definition is used to register types of objects of which different versions can be tracked using the version tracker API.]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.visitTracker.objectType.description"><![CDATA[This object type definition is used to register types of objects for which it can be tracked if and when users have already seen or accessed them (the last time).]]></item>
+               <item name="wcf.acp.pip.objectType.definitionName.com.woltlab.wcf.article.discussionProvider.description"><![CDATA[This object type definition is used to register different providers for where discussions on articles take place.]]></item>
+               <item name="wcf.acp.pip.objectType.objectType"><![CDATA[Object Type Identifier]]></item>
+               <item name="wcf.acp.pip.objectType.objectType.description"><![CDATA[Textual identifier of the object type that is primarily used in PHP code. The identifier consists of at least four segments that are separated by dots. Each segment may only contain the following characters: <code>[A-z0-9-_]</code>.]]></item>
+               <item name="wcf.acp.pip.objectType.objectType.error.notUnique"><![CDATA[The entered name is already used by another object type of the same object type definition.]]></item>
+               <item name="wcf.acp.pip.objectType.objectType.error.tooFewSegments"><![CDATA[The entered identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.definitionName"><![CDATA[Definition Name]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.definitionName.description"><![CDATA[The name of an object type definitions consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the definition name matches the package identifier. Example: <code>{$project->getPackage()->package}.type</code>]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.definitionName.error.notUnique"><![CDATA[The entered name is already used by another definition.]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.definitionName.error.tooFewSegments"><![CDATA[The entered name only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.interfaceName"><![CDATA[PHP Interface]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.interfaceName.description"><![CDATA[If a PHP interface is entered, every object type of this definition must provide the name of a PHP class that implements the interface.]]></item>
+               <item name="wcf.acp.pip.objectTypeDefinition.interfaceName.error.nonExistent"><![CDATA[The entered interface does not exist.]]></item>
+               <item name="wcf.acp.pip.pip.pluginName"><![CDATA[Package Installation Plugin Name]]></item>
+               <item name="wcf.acp.pip.pip.pluginName.description"><![CDATA[The name of the package installation plugin is used as the value of the <code>type</code> attribute of an <code>instruction</code> element in a <code>package.xml</code> file. The name may only consist of letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.pip.pluginName.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.pip.pluginName.error.notUnique"><![CDATA[The entered name is already used by another package installation plugin.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.menuItem"><![CDATA[Menu Item Name]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.menuItem.description"><![CDATA[The name of the user profile may only contain letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.menuItem.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.menuItem.error.notUnique"><![CDATA[The entered name is already used by another user profile menu item.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.showOrder.description"><![CDATA[The entered value determines in which order the user profile menu items are shown.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.options.description"><![CDATA[At least one of the entered options has to be enabled for the menu item to be available. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.userProfileMenu.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to see the menu item. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.eventName"><![CDATA[Event Name]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.eventName.description"><![CDATA[The name of the event may only contain letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.eventName.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.eventName.error.notUnique"><![CDATA[The entered name is already used by another event for the same event object type.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.objectType"><![CDATA[Event Object Type]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.objectType.description"><![CDATA[Determines the type of object the notification event belongs to.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.preset"><![CDATA[Enable By Default]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.preset.description"><![CDATA[If selected, users will automatically receive notifications for this event by default. If they do not want to receive such notifications, they have to explicitly disable them in their notification settings.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.options.description"><![CDATA[At least one of the entered options has to be enabled for the event to be visible in users’ notification settings. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to see the event in their notification settings. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.presetMailNotificationType"><![CDATA[Default Mail Notification Type]]></item>
+               <item name="wcf.acp.pip.userNotificationEvent.presetMailNotificationType.description"><![CDATA[If a notification type is selected, users’ mail setting for this event will have the selected value by default.]]></item>
+               <item name="wcf.acp.pip.templateListener.environment"><![CDATA[Environment]]></item>
+               <item name="wcf.acp.pip.templateListener.environment.description"><![CDATA[The environment determines whether the template listener is executed in the frontend (<code>user</code>) or the ACP (<code>admin</code>).]]></item>
+               <item name="wcf.acp.pip.templateListener.eventName"><![CDATA[Event]]></item>
+               <item name="wcf.acp.pip.templateListener.eventName.description"><![CDATA[The selected event determines at which location in the template the template listeners’ code is inserted.]]></item>
+               <item name="wcf.acp.pip.templateListener.name"><![CDATA[Template Listener Name]]></item>
+               <item name="wcf.acp.pip.templateListener.name.description"><![CDATA[The name of the event may only contain letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.templateListener.name.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.templateListener.name.error.notUnique"><![CDATA[The entered name is already used by another template listener for the same event.]]></item>
+               <item name="wcf.acp.pip.templateListener.templateCode"><![CDATA[Template Code]]></item>
+               <item name="wcf.acp.pip.templateListener.templateCode.description"><![CDATA[The entered template code is inserted at the location of the specified template event.]]></item>
+               <item name="wcf.acp.pip.templateListener.templateName"><![CDATA[Template]]></item>
+               <item name="wcf.acp.pip.templateListener.templateName.description"><![CDATA[The template listeners’ code will be inserted into the selected template.]]></item>
+               <item name="wcf.acp.pip.coreObject.objectName.error.notUnique"><![CDATA[The entered class is already registered as a core object.]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.providerName"><![CDATA[Provider Name]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.providerName.description"><![CDATA[The name of an ACP search result provider consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the definition name matches the package identifier. Example: <code>{$project->getPackage()->package}.searchedObject</code>]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.providerName.error.notUnique"><![CDATA[The entered name is already used by another acp search result provider.]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.providerName.error.tooFewSegments"><![CDATA[The entered provider name only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.acpSearchProvider.showOrder.description"><![CDATA[The entered value determines in which order the different types of search results are shown.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.name"><![CDATA[Provider Name]]></item>
+               <item name="wcf.acp.pip.mediaProvider.name.description"><![CDATA[The name of the media provider may only contain letters, numbers and dashes and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.name.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.regex"><![CDATA[Regular Expressions]]></item>
+               <item name="wcf.acp.pip.mediaProvider.regex.description"><![CDATA[The entered regular expressions (without delimiters) are used to check if this media provider is responsible for a given link. Each line is treated as its own regular expression.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.html"><![CDATA[HTML Code]]></item>
+               <item name="wcf.acp.pip.mediaProvider.html.description"><![CDATA[The html code is used to produce the rendered output of the linked media content. Every named group of the regular expression is accessible as <code>{literal}{$name}{/literal}</code> where <code>name</code> is the name of the group.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.html.error.className"><![CDATA[You cannot enter HTML code if you have already provided a class that handles the output.]]></item>
+               <item name="wcf.acp.pip.mediaProvider.html.error.noClassName"><![CDATA[You have to provide either HTML code or a class that handles the output.]]></item>
+               <item name="wcf.acp.pip.aclOption.categories.name"><![CDATA[Category Name]]></item>
+               <item name="wcf.acp.pip.aclOption.categories.name.description"><![CDATA[The name of an ACL option category consists of least two segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes.]]></item>
+               <item name="wcf.acp.pip.aclOption.categories.name.error.tooFewSegments"><![CDATA[The entered category name only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.aclOption.options.categoryName"><![CDATA[Category]]></item>
+               <item name="wcf.acp.pip.aclOption.options.categoryName.description"><![CDATA[The ACL option is listed in the selected category.]]></item>
+               <item name="wcf.acp.pip.aclOption.options.name"><![CDATA[Option Name]]></item>
+               <item name="wcf.acp.pip.aclOption.options.name.description"><![CDATA[The name of the ACL option may only contain letters and must begin with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.aclOption.options.name.error.format"><![CDATA[The entered option name is invalid]]></item>
+               <item name="wcf.acp.pip.aclOption.objectType"><![CDATA[ACL Object Type]]></item>
+               <item name="wcf.acp.pip.aclOption.objectType.categories.description"><![CDATA[The ACL object type determines to which type of objects the category belongs to. Note that only ACL object types of the package itself or its required packages are available.]]></item>
+               <item name="wcf.acp.pip.aclOption.objectType.categories.error.notUnique"><![CDATA[The entered name is already used by another ACL option category for the same ACL object type.]]></item>
+               <item name="wcf.acp.pip.aclOption.objectType.options.description"><![CDATA[The ACL object type determines to which type of objects the option belongs to. Note that only ACL object types of the package itself or its required packages are available.]]></item>
+               <item name="wcf.acp.pip.aclOption.objectType.options.error.notUnique"><![CDATA[The entered name is already used by another ACL option for the same ACL object type.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItem"><![CDATA[Menu Item Identifier]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItem.error.notUnique"><![CDATA[The entered identifier is already used by another menu item.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.parentMenuItem"><![CDATA[Parent Menu Item]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItemController"><![CDATA[Menu Item Controller]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItemLink"><![CDATA[Menu Item Link]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItemLink.description"><![CDATA[If no menu item controller is used, the entered link will be used. If, however, a menu item controller is used, the entered link will be appended to the link to the controller.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItemLink.error.noLink"><![CDATA[The entered value is no valid link.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.menuItemLink.error.noLinkSpecified"><![CDATA[You either have to enter a menu item controller or a menu item link.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.options.description"><![CDATA[At least one of the entered options has to be enabled for the menu item to be visible. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to see the menu item. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.abstractMenu.showOrder.description"><![CDATA[The entered value determines in which order the menu items with the same parent are shown.]]></item>
+               <item name="wcf.acp.pip.acpMenu.icon"><![CDATA[Menu Item Icon]]></item>
+               <item name="wcf.acp.pip.acpMenu.icon.description"><![CDATA[The menu item icon is only available for menu items on the first level (without any parent) and for menu items on the fourth level. For first level menu items, the icon is shown in addition to the menu item title while for fourth level menu items, only the icon is shown and the menu item title becomes a tooltip.]]></item>
+               <item name="wcf.acp.pip.acpMenu.menuItem.description"><![CDATA[The menu item identifier must have the format <code>{literal}{app}.acp.menu.link.{additionalIdentifiers}{/literal}</code> where <code>{literal}{app}{/literal}</code> and <code>{literal}{additionalIdentifiers}{/literal}</code> have to be replaced with the appropriate values. <code>{literal}{additionalIdentifiers}{/literal}</code> may only contain letters, numbers, ands dots.]]></item>
+               <item name="wcf.acp.pip.acpMenu.menuItem.error.format"><![CDATA[The entered identifier is invalid.]]></item>
+               <item name="wcf.acp.pip.acpMenu.menuItemController.error.noAcpController"><![CDATA[The entered controller is no ACP controller. An ACP controller begins with <code>{literal}{app}{/literal}\acp\</code> where <code>{literal}{app}{/literal}</code> is the abbreviation of the relevant app.]]></item>
+               <item name="wcf.acp.pip.userMenu.iconClassName"><![CDATA[Menu Item Icon]]></item>
+               <item name="wcf.acp.pip.userMenu.iconClassName.description"><![CDATA[The menu item icon is only available for menu items on the first level.]]></item>
+               <item name="wcf.acp.pip.userMenu.menuItem.description"><![CDATA[The menu item identifier must have the format <code>{literal}{app}.user.menu.{additionalIdentifiers}{/literal}</code> where <code>{literal}{app}{/literal}</code> and <code>{literal}{additionalIdentifiers}{/literal}</code> have to be replaced with the appropriate values. <code>{literal}{additionalIdentifiers}{/literal}</code> may only contain letters, numbers, ands dots.]]></item>
+               <item name="wcf.acp.pip.userMenu.menuItem.error.format"><![CDATA[The entered identifier is invalid.]]></item>
+               <item name="wcf.acp.pip.cronjob.cronjobName"><![CDATA[Cronjob Identifier]]></item>
+               <item name="wcf.acp.pip.cronjob.cronjobName.description"><![CDATA[The cronjob identifier generally consists of the package identifier and the unqualified class name beginning with a lowercase letter and without the “Cronjob” suffix (example: <code>com.woltlab.wcf.example.doStuff</code> is the identifier for the cronjob <code>wcf\system\cronjob\DoStuffCronjob</code> from the <code>com.woltlab.wcf.example</code> package).]]></item>
+               <item name="wcf.acp.pip.cronjob.description.description"><![CDATA[The description explains the functionality of the cronjob.]]></item>
+               <item name="wcf.acp.pip.cronjob.options.description"><![CDATA[At least one of the entered options has to be enabled for the cronjob to be executed. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.cronjob.isDisabled"><![CDATA[Disable Cronjob]]></item>
+               <item name="wcf.acp.pip.cronjob.isDisabled.description"><![CDATA[If the cronjob is disabled by default, users have to manually enable it after installing the package.]]></item>
+               <item name="wcf.acp.pip.cronjob.canBeEdited"><![CDATA[Cronjob Can Be Edited]]></item>
+               <item name="wcf.acp.pip.cronjob.canBeEdited.description"><![CDATA[Users are able to edit the cronjob to, for example, change the execution times.]]></item>
+               <item name="wcf.acp.pip.cronjob.canBeDisabled"><![CDATA[Cronjob Can Be Disabled]]></item>
+               <item name="wcf.acp.pip.cronjob.canBeDisabled.description"><![CDATA[Users are able to disable the cronjob so that it will not be executed.]]></item>
+               <item name="wcf.acp.pip.cronjob.startDom.error.format"><![CDATA[The entered format is invalid. You have to entered a valid day of month or a list of valid days of month.]]></item>
+               <item name="wcf.acp.pip.cronjob.startDow.error.format"><![CDATA[The entered format is invalid. You have to entered a valid weekday or a list of valid weekdays.]]></item>
+               <item name="wcf.acp.pip.cronjob.startHour.error.format"><![CDATA[The entered format is invalid. You have to entered a valid hour or a list of valid hours.]]></item>
+               <item name="wcf.acp.pip.cronjob.startMinute.error.format"><![CDATA[The entered format is invalid. You have to entered a valid minute or a list of valid minutes.]]></item>
+               <item name="wcf.acp.pip.cronjob.startMonth.error.format"><![CDATA[The entered format is invalid. You have to entered a valid month or a list of valid months.]]></item>
+               <item name="wcf.acp.pip.menu.identifier"><![CDATA[Menu Identifier]]></item>
+               <item name="wcf.acp.pip.menu.identifier.description"><![CDATA[The menu identifier is used to update menus and for menu-related language item names. The identifier consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the menu identifier is the package identifier. Example: <code>com.foo.bar.menu</code>]]></item>
+               <item name="wcf.acp.pip.menu.identifier.error.notUnique"><![CDATA[The entered identifier is already used by another menu.]]></item>
+               <item name="wcf.acp.pip.menu.identifier.error.tooFewSegments"><![CDATA[The entered menu identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.menu.createBox"><![CDATA[Automatically Create Box for Menu]]></item>
+               <item name="wcf.acp.pip.menu.createBox.description"><![CDATA[If this option is selected, after creating the menu, a box for the menu will also be created.]]></item>
+               <item name="wcf.acp.pip.menu.boxPosition"><![CDATA[Box Position]]></item>
+               <item name="wcf.acp.pip.menu.boxPosition.description"><![CDATA[Determines the position at which the box containing the menu will be shown.]]></item>
+               <item name="wcf.acp.pip.menu.boxShowHeader"><![CDATA[Show Box Header]]></item>
+               <item name="wcf.acp.pip.menu.boxShowHeader.description"><![CDATA[The title in the box header is the title of the menu.]]></item>
+               <item name="wcf.acp.pip.menu.boxVisibleEverywhere"><![CDATA[Box Visible Everywhere]]></item>
+               <item name="wcf.acp.pip.menu.boxVisibilityExceptions.hiddenEverywhere"><![CDATA[Pages on Which the Box Will be Explicitly <strong>Visible</strong>]]></item>
+               <item name="wcf.acp.pip.menu.boxVisibilityExceptions.visibleEverywhere"><![CDATA[Pages on Which the Box Will be Explicitly <strong>Hidden</strong>]]></item>
+               <item name="wcf.acp.pip.menu.boxCssClassName"><![CDATA[Box CSS Classes]]></item>
+               <item name="wcf.acp.pip.menu.boxCssClassName.description"><![CDATA[The entered comma-separated CSS classes are assigned to the box containing the menu.]]></item>
+               <item name="wcf.acp.pip.menuItem.identifier"><![CDATA[Menu Item Identifier]]></item>
+               <item name="wcf.acp.pip.menuItem.identifier.description"><![CDATA[The menu item identifier is used to update menu items and for menu item-related language item names. The identifier consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the menu identifier is the package identifier. Example: <code>com.foo.bar.menu</code>]]></item>
+               <item name="wcf.acp.pip.menuItem.identifier.error.notUnique"><![CDATA[The entered identifier is already used by another menu item.]]></item>
+               <item name="wcf.acp.pip.menuItem.identifier.error.tooFewSegments"><![CDATA[The identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.menuItem.menu"><![CDATA[Menu]]></item>
+               <item name="wcf.acp.pip.menuItem.menu.description"><![CDATA[The menu item will belong to the selected menu.]]></item>
+               <item name="wcf.acp.pip.menuItem.linkType"><![CDATA[Menu Item Link Type]]></item>
+               <item name="wcf.acp.pip.menuItem.linkType.internal"><![CDATA[Internal Link]]></item>
+               <item name="wcf.acp.pip.menuItem.linkType.external"><![CDATA[External Link]]></item>
+               <item name="wcf.acp.pip.menuItem.page"><![CDATA[Page]]></item>
+               <item name="wcf.acp.pip.menuItem.page.description"><![CDATA[The menu item will link to the selected page.]]></item>
+               <item name="wcf.acp.pip.menuItem.parentMenuItem"><![CDATA[Parent Menu Item]]></item>
+               <item name="wcf.acp.pip.menuItem.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.menuItem.showOrder.description"><![CDATA[The entered value determines in which order the menu items with the same parent are shown.]]></item>
+               <item name="wcf.acp.pip.menuItem.externalURL"><![CDATA[External URL]]></item>
+               <item name="wcf.acp.pip.menuItem.externalURL.description"><![CDATA[When clicking on the menu item, the user is redirected to the entered website.]]></item>
+               <item name="wcf.acp.pip.page.identifier"><![CDATA[Page Identifier]]></item>
+               <item name="wcf.acp.pip.page.identifier.description"><![CDATA[The identifier consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the menu identifier is the package identifier and the second part is the unqualified controller class without the controller type suffixes <code>Form</code> and <code>Page</code>. Example: <code>com.foo.bar.Baz</code>]]></item>
+               <item name="wcf.acp.pip.page.identifier.error.notUnique"><![CDATA[The entered identifier is already used by another page.]]></item>
+               <item name="wcf.acp.pip.page.identifier.error.tooFewSegments"><![CDATA[The identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.page.pageType"><![CDATA[Page Type]]></item>
+               <item name="wcf.acp.pip.page.pageType.description"><![CDATA[The content of “text” pages can be edited by administrators using the built-in WYSIWYG editor. “html” pages addditionally allow HTML code and “tpl” pages also template scripting. The content of “system” pages cannot be edited by administrators as their content is provided by the pages' controller.]]></item>
+               <item name="wcf.acp.pip.page.name"><![CDATA[Name]]></item>
+               <item name="wcf.acp.pip.page.name.description"><![CDATA[The page name is displayed in the ACP on the page list.]]></item>
+               <item name="wcf.acp.pip.page.controller"><![CDATA[Page Controller]]></item>
+               <item name="wcf.acp.pip.page.handler"><![CDATA[Page Handler]]></item>
+               <item name="wcf.acp.pip.page.controllerCustomURL"><![CDATA[Custom Page URL]]></item>
+               <item name="wcf.acp.pip.page.controllerCustomURL.description"><![CDATA[TODO]]></item>
+               <item name="wcf.acp.pip.page.requireObjectID"><![CDATA[Requires Object ID]]></item>
+               <item name="wcf.acp.pip.page.requireObjectID.description"><![CDATA[The page requires an object id to be displayed.]]></item>
+               <item name="wcf.acp.pip.page.hasFixedParent"><![CDATA[Has Fixed Parent]]></item>
+               <item name="wcf.acp.pip.page.hasFixedParent.description"><![CDATA[Users are unable to change the page's parent page.]]></item>
+               <item name="wcf.acp.pip.page.parent"><![CDATA[Parent Page]]></item>
+               <item name="wcf.acp.pip.page.parent.error.selfParent"><![CDATA[You have selected the page itself as its parent page.]]></item>
+               <item name="wcf.acp.pip.page.options.description"><![CDATA[At least one of the entered options has to be enabled for <strong>menu items</strong> linking to this page to be visible. This option does control the accessibility of the page itself. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.page.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions in order to see <strong>menu items</strong> linking to this page. This option does control the accessibility of the page itself. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.page.cssClassName"><![CDATA[CSS Classes]]></item>
+               <item name="wcf.acp.pip.page.cssClassName.description"><![CDATA[The entered comma-separated CSS classes are assigned to the <code>body</code> element.]]></item>
+               <item name="wcf.acp.pip.page.allowSpidersToIndex"><![CDATA[Allow search spiders to index this page]]></item>
+               <item name="wcf.acp.pip.page.excludeFromLandingPage"><![CDATA[Page cannot be set as landing page]]></item>
+               <item name="wcf.acp.pip.page.availableDuringOfflineMode"><![CDATA[Page is available during maintenance mode]]></item>
+               <item name="wcf.acp.pip.page.contentTitle"><![CDATA[Title]]></item>
+               <item name="wcf.acp.pip.page.contentContent"><![CDATA[Content]]></item>
+               <item name="wcf.acp.pip.page.contentCustomURL"><![CDATA[Custom URL]]></item>
+               <item name="wcf.acp.pip.page.contentMetaDescription"><![CDATA[Meta Description]]></item>
+               <item name="wcf.acp.pip.page.contentMetaKeywords"><![CDATA[Meta Keywords]]></item>
+               <item name="wcf.acp.pip.page.content"><![CDATA[Page Contents]]></item>
+               <item name="wcf.acp.pip.eventListener.listenerName"><![CDATA[Event Listener Identifier]]></item>
+               <item name="wcf.acp.pip.eventListener.listenerName.description"><![CDATA[Unique textual identifier of the event listener that may only contain letters and must start with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.eventListener.listenerName.error.format"><![CDATA[The entered identifier is invalid.]]></item>
+               <item name="wcf.acp.pip.eventListener.listenerName.error.notUnique"><![CDATA[The entered identifier is already used by another event listener.]]></item>
+               <item name="wcf.acp.pip.eventListener.eventClassName"><![CDATA[PHP Event Class]]></item>
+               <item name="wcf.acp.pip.eventListener.eventClassName.description"><![CDATA[The entered class (without leading backslash) fires the event. Alternatively, the entered class inherits from the the class firing the event.]]></item>
+               <item name="wcf.acp.pip.eventListener.eventName"><![CDATA[Event Name]]></item>
+               <item name="wcf.acp.pip.eventListener.eventName.description"><![CDATA[Name of the event of the relevant class the event listener is listening to.]]></item>
+               <item name="wcf.acp.pip.eventListener.listenerClassName"><![CDATA[PHP Event Listener Class]]></item>
+               <item name="wcf.acp.pip.eventListener.environment"><![CDATA[Environment]]></item>
+               <item name="wcf.acp.pip.eventListener.environment.description"><![CDATA[The environment determines whether the event listener is executed in the frontend (<code>user</code>) or the ACP (<code>admin</code>).]]></item>
+               <item name="wcf.acp.pip.eventListener.inherit"><![CDATA[Inherit Event Listener]]></item>
+               <item name="wcf.acp.pip.eventListener.inherit.description"><![CDATA[If an event listener is inherited, it is not only triggered if the event is fired by the class entered above, but it is also fired by classes inheriting from the entered class.]]></item>
+               <item name="wcf.acp.pip.eventListener.niceValue"><![CDATA[Nice Value]]></item>
+               <item name="wcf.acp.pip.eventListener.niceValue.description"><![CDATA[The nice value is used to determine the order in which event listeners for the same event are executed. Event listeners with lower nice value are executed first.]]></item>
+               <item name="wcf.acp.pip.eventListener.options.description"><![CDATA[At least one of the entered options has to be enabled for the event listener to be executed. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.eventListener.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions for the event listener to be executed. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.clipboardAction.actionName"><![CDATA[Clipboard Action Name]]></item>
+               <item name="wcf.acp.pip.clipboardAction.actionName.description"><![CDATA[Unique textual identifier (per clipboard action class name) of the clipboard action that may only contain letters and must start with a lowercase letter.]]></item>
+               <item name="wcf.acp.pip.clipboardAction.actionName.error.format"><![CDATA[The entered name is invalid.]]></item>
+               <item name="wcf.acp.pip.clipboardAction.actionClassName"><![CDATA[Clipboard Action Class Name]]></item>
+               <item name="wcf.acp.pip.clipboardAction.actionClassName.error.notUnique"><![CDATA[There is already a clipboard action for the entered action class with this action name.]]></item>
+               <item name="wcf.acp.pip.clipboardAction.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.clipboardAction.showOrder.description"><![CDATA[The entered value determines in which order the clipboard actions for the same clipboard action class are shown.]]></item>
+               <item name="wcf.acp.pip.clipboardAction.pages"><![CDATA[Pages]]></item>
+               <item name="wcf.acp.pip.clipboardAction.pages.description"><![CDATA[The clipboard action is available on the entered pages.]]></item>
+               <item name="wcf.acp.pip.box.position"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.box.boxType"><![CDATA[Box Type]]></item>
+               <item name="wcf.acp.pip.box.boxType.description"><![CDATA[The content of “text” boxes can be edited by administrators using the built-in WYSIWYG editor. “html” boxes addditionally allow HTML code and “tpl” boxes also template scripting. The content of “system” boxes cannot be edited by administrators as their content is provided by the boxes' controller.]]></item>
+               <item name="wcf.acp.pip.box.objectType"><![CDATA[Box Controller]]></item>
+               <item name="wcf.acp.pip.box.objectType.description"><![CDATA[The box controller provides the content of the box.]]></item>
+               <item name="wcf.acp.pip.box.identifier"><![CDATA[Box Identifier]]></item>
+               <item name="wcf.acp.pip.box.identifier.description"><![CDATA[The box identifier is used to update boxes. The identifier consists of least four segments separated by dots. Each segment must not be empty and may only contain letters, numbers, underscores, and dashes. In general, the first part of the menu identifier is the package identifier. Example: <code>com.foo.bar.Box</code>]]></item>
+               <item name="wcf.acp.pip.box.identifier.error.notUnique"><![CDATA[The entered identifier is already used by another box.]]></item>
+               <item name="wcf.acp.pip.box.identifier.error.tooFewSegments"><![CDATA[The identifier only contains {#$segmentCount} segment{if $segmentCount > 1}s{/if}.]]></item>
+               <item name="wcf.acp.pip.box.name"><![CDATA[Name]]></item>
+               <item name="wcf.acp.pip.box.name.description"><![CDATA[The box name is displayed in the ACP on the box list.]]></item>
+               <item name="wcf.acp.pip.box.showHeader"><![CDATA[Show Header]]></item>
+               <item name="wcf.acp.pip.box.visibleEverywhere"><![CDATA[Box Visible Everywhere]]></item>
+               <item name="wcf.acp.pip.box.visibilityExceptions.hiddenEverywhere"><![CDATA[Pages on Which the Box Will be Explicitly <strong>Visible</strong>]]></item>
+               <item name="wcf.acp.pip.box.visibilityExceptions.visibleEverywhere"><![CDATA[Pages on Which the Box Will be Explicitly <strong>Hidden</strong>]]></item>
+               <item name="wcf.acp.pip.box.cssClassName"><![CDATA[Box CSS Classes]]></item>
+               <item name="wcf.acp.pip.box.cssClassName.description"><![CDATA[The entered comma-separated CSS classes are assigned to the box element.]]></item>
+               <item name="wcf.acp.pip.box.content"><![CDATA[Box Contents]]></item>
+               <item name="wcf.acp.pip.box.content.title"><![CDATA[Box Title]]></item>
+               <item name="wcf.acp.pip.box.content.content"><![CDATA[Box Content]]></item>
+               <item name="wcf.acp.box.controller.sortField"><![CDATA[Sort By]]></item>
+               <item name="wcf.acp.box.controller.sortField.description"><![CDATA[The selected object property is used for sorting.]]></item>
+               <item name="wcf.acp.box.controller.limit"><![CDATA[Maximum Number of Items]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionName"><![CDATA[Option Name]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.categoryName"><![CDATA[Category]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType"><![CDATA[Option Type]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.categoryName"><![CDATA[Category Name]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.parentCategoryName"><![CDATA[Parent Category]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.showOrder.description"><![CDATA[The entered value determines in which order the categories with the same parent category are shown.]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.options.description"><![CDATA[At least one of the entered options has to be enabled for the options in the category to be editable. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractOption.categories.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions for the options in the category to be editable. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.options.description"><![CDATA[At least one of the entered options has to be enabled for the value of this option to be editable. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions for the value of the option to be editable. Permissions of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.defaultValue"><![CDATA[Default Value]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.defaultValue.description"><![CDATA[After installing the option, the entered value is the option’s default value.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.validationPattern"><![CDATA[Validation Pattern]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.validationPattern.description"><![CDATA[The entered validation pattern is used to validate the entered value when editing the option’s value.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.validationPattern.error.invalid"><![CDATA[The entered validation pattern is invalid.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.selectOptions"><![CDATA[Selectable Options]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.selectOptions.description"><![CDATA[Each option has to be written in a new line using the format <code>value:description</code> where <code>description</code> may be the identifier of a phrase.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.enableOptions"><![CDATA[Enabled Options]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.enableOptions.description"><![CDATA[Each enable options setting has to be written in a new line using the format <code>key:otherOptions</code> where <code>key:</code> is optional. If a key is present, the setting is only relevant if this option has the specified key as value. <code>otherOptions</code> is a comma-separated list refering to the other options that will either be enabled or disabled depending on this option’s value. If an exclamation mark is in front of an option name, the logic is inversed: If this option has the specified key as value, the referenced option will be disabled instead of enabled.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.showOrder.description"><![CDATA[The entered value determines in which order the options in the same category are shown.]]></item>
+               <item name="wcf.acp.pip.option.optionName.error.notUnique"><![CDATA[The entered option name is already used by another option.]]></item>
+               <item name="wcf.acp.pip.option.options.hidden"><![CDATA[Hidden Option]]></item>
+               <item name="wcf.acp.pip.option.options.hidden.description"><![CDATA[The value of the option cannot be actively set by the administrator in the ACP.]]></item>
+               <item name="wcf.acp.pip.option.options.supportI18n"><![CDATA[Support Multilingual Input]]></item>
+               <item name="wcf.acp.pip.option.options.supportI18n.description"><![CDATA[If selected, the option supports different values for each available language.]]></item>
+               <item name="wcf.acp.pip.option.options.requireI18n"><![CDATA[Require Multilingual Input]]></item>
+               <item name="wcf.acp.pip.option.options.requireI18n.description"><![CDATA[If selected, the option’s value must be explicitly set for each available language.]]></item>
+               <item name="wcf.acp.pip.option.options.optionType.description"><![CDATA[The option type determines the interface with which the value of the option is set and which (types of) values the option may have.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.select.allowEmptyValue"><![CDATA[Allow Empty Value]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.select.allowEmptyValue.description"><![CDATA[If selected, the value of the option may be empty.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.useroptions.isSortable"><![CDATA[User Options Are Sortable]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.useroptions.isSortable.description"><![CDATA[If selected, the user option cannot only be selected but also sorted.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.integer.maxValue"><![CDATA[Maximum Value]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.integer.minValue"><![CDATA[Minimum Value]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.integer.suffix"><![CDATA[Suffix]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.integer.suffix.description"><![CDATA[When setting the option value, the entered suffix (using the language item <code>wcf.acp.option.suffix.{literal}{$suffix}{/literal}</code>) is shown behind the input field.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.text.minLength"><![CDATA[Minimum Length]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.text.maxLength"><![CDATA[Maximum Length]]></item>
+               <item name="wcf.acp.pip.bbcode.bbcodeTag"><![CDATA[BBCode Identifier]]></item>
+               <item name="wcf.acp.pip.bbcode.bbcodeTag.description"><![CDATA[The textual BBCode identifier is used to identify BBCodes, for example when updating BBCodes. The identifier may only contain lowercase letters and numbers.]]></item>
+               <item name="wcf.acp.pip.bbcode.bbcodeTag.error.allNone"><![CDATA[The identifier may neither be <code>all</code> nor <code>none</code>.]]></item>
+               <item name="wcf.acp.pip.bbcode.bbcodeTag.error.format"><![CDATA[The identifier may only contain lowercase letters and numbers.]]></item>
+               <item name="wcf.acp.pip.bbcode.bbcodeTag.error.notUnique"><![CDATA[The entered identifier is already used by another BBCode.]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlOpen"><![CDATA[Opening HTML tag]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlOpen.description"><![CDATA[Opening tag of the HTML element wrapping the BBCode’s content (without leading or trailing angle brackets).]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlOpen.error.leadingBracket"><![CDATA[The tag may not begin with an angle bracket.]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlOpen.error.trailingBracket"><![CDATA[The tag may not end with an angle bracket.]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlClose"><![CDATA[Closing HTML tag]]></item>
+               <item name="wcf.acp.pip.bbcode.htmlClose.description"><![CDATA[Closing tag of the HTML element wrapping the BBCode’s content (without leading or trailing angle brackets).]]></item>
+               <item name="wcf.acp.pip.bbcode.attributes"><![CDATA[Attributes]]></item>
+               <item name="wcf.acp.pip.bbcode.isBlockElement"><![CDATA[BBCode represents block element]]></item>
+               <item name="wcf.acp.pip.bbcode.isBlockElement.description"><![CDATA[Block elements can contain line breaks and paragraphs, and generally take up the entire available width. This option must not be selected for inline elements.]]></item>
+               <item name="wcf.acp.pip.bbcode.isSourceCode"><![CDATA[Content represents source code]]></item>
+               <item name="wcf.acp.pip.bbcode.isSourceCode.description"><![CDATA[The content of the BBCode will not be parsed.]]></item>
+               <item name="wcf.acp.pip.bbcode.showButton"><![CDATA[Display button in WYSIWYG editor]]></item>
+               <item name="wcf.acp.pip.bbcode.showButton.description"><![CDATA[The BBCode will be easily available by clicking on the associated button in the WYSIWYG editor toolbar.]]></item>
+               <item name="wcf.acp.pip.bbcode.buttonLabel"><![CDATA[Button Label]]></item>
+               <item name="wcf.acp.pip.bbcode.buttonLabel.description"><![CDATA[The label is shown when hovering over the button in the WYSIWYG editor toolbar.]]></item>
+               <item name="wcf.acp.pip.bbcode.iconType"><![CDATA[Button Icon Type]]></item>
+               <item name="wcf.acp.pip.bbcode.iconType.filePath"><![CDATA[Image]]></item>
+               <item name="wcf.acp.pip.bbcode.iconType.fontAwesome"><![CDATA[FontAwesome Icon]]></item>
+               <item name="wcf.acp.pip.bbcode.iconPath"><![CDATA[Path to icon file]]></item>
+               <item name="wcf.acp.pip.bbcode.iconPath.description"><![CDATA[The entered path has to be relative to <code>{'WCF_DIR'|constant}icon/</code>.]]></item>
+               <item name="wcf.acp.pip.bbcode.iconPath.error.fileDoesNotExist"><![CDATA[The entered file does not exist.]]></item>
+               <item name="wcf.acp.pip.bbcode.wysiwygIcon"><![CDATA[Icon]]></item>
+               <item name="wcf.acp.pip.smiley.smileyCode"><![CDATA[Primary Smiley Code]]></item>
+               <item name="wcf.acp.pip.smiley.smileyCode.description"><![CDATA[Primary code that is converted into this smiley.]]></item>
+               <item name="wcf.acp.pip.smiley.smileyCode.error.notUnique"><![CDATA[The entered identifier is already used by another smiley.]]></item>
+               <item name="wcf.acp.pip.smiley.aliases"><![CDATA[Secondary Smiley Codes]]></item>
+               <item name="wcf.acp.pip.smiley.aliases.description"><![CDATA[Secondary codes that are converted into this smiley.]]></item>
+               <item name="wcf.acp.pip.smiley.aliases.error.notUnique"><![CDATA[The following aliases are already used by another smiley: {implode from=$notUniqueCodes item=notUniqueCode}<code>{$notUniqueCode}</code>{/implode}.]]></item>
+               <item name="wcf.acp.pip.smiley.showOrder"><![CDATA[Display Order]]></item>
+               <item name="wcf.acp.pip.smiley.showOrder.description"><![CDATA[The entered value determines in which order the smiley are shown.]]></item>
+               <item name="wcf.acp.pip.smiley.smileyPath"><![CDATA[Smiley Path]]></item>
+               <item name="wcf.acp.pip.smiley.smileyPath.description"><![CDATA[The entered path has to be relative to <code>{'WCF_DIR'|constant}</code>.]]></item>
+               <item name="wcf.acp.pip.smiley.smileyPath.error.fileDoesNotExist"><![CDATA[The entered file does not exist.]]></item>
+               <item name="wcf.acp.pip.smiley.smileyPath2x"><![CDATA[HD Smiley Path]]></item>
+               <item name="wcf.acp.pip.smiley.smileyPath2x.description"><![CDATA[The entered path has to be relative to <code>{'WCF_DIR'|constant}</code>.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.usersOnly"><![CDATA[Members Only]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.usersOnly.description"><![CDATA[The user group option is only available for registered members-only user groups.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.optionType.description"><![CDATA[The option type determines the interface with which the value of the user group option is set and which (types of) values the option may have. Additionally, the option type also determines how the final option value is determined if a user is in multiple user groups with different option values.]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionName.description"><![CDATA[The option name is used to update options and to identify options in PHP code.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.adminDefaultValue"><![CDATA[Administrator Default Value]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.adminDefaultValue.description"><![CDATA[The administrator default value is used for administrator user groups. Administrator user groups are user groups that can edit every user group.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.modDefaultValue"><![CDATA[Moderator Default Value]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.modDefaultValue.description"><![CDATA[The moderator default value is used for moderator user groups. Moderator user groups are user groups that can access the moderation.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.userDefaultValue"><![CDATA[User Default Value]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.userDefaultValue.description"><![CDATA[The user default value is used for the user groups containing all registered users.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.excludedInTinyBuild"><![CDATA[Disable for Accelerated Guest View]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.excludedInTinyBuild.description"><![CDATA[If the accelared guest view is enabled, the user group option’s value is “Never” for guests regardless of the actual value set for the guests user group.]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.wildcard"><![CDATA[Wildcard]]></item>
+               <item name="wcf.acp.pip.userGroupOption.options.wildcard.description"><![CDATA[If a wildcard is specified and if one line of the user group option value only contains this wildcare, the entire option value will be replaced by the wildcard.]]></item>
+               <item name="wcf.acp.pip.userOption.options.required"><![CDATA[Required User Option]]></item>
+               <item name="wcf.acp.pip.userOption.options.required.description"><![CDATA[Users must provide a value for this user option.]]></item>
+               <item name="wcf.acp.pip.userOption.options.askDuringRegistration"><![CDATA[Available During Registration]]></item>
+               <item name="wcf.acp.pip.userOption.options.askDuringRegistration.description"><![CDATA[The user option is available during registration.]]></item>
+               <item name="wcf.acp.pip.userOption.options.editable"><![CDATA[Editability]]></item>
+               <item name="wcf.acp.pip.userOption.options.editable.description"><![CDATA[The user option value can only be edited by the selected group of users.]]></item>
+               <item name="wcf.acp.pip.userOption.options.visible"><![CDATA[Visibility]]></item>
+               <item name="wcf.acp.pip.userOption.options.visible.description"><![CDATA[The user option value is only visible for the selected group of users.]]></item>
+               <item name="wcf.acp.pip.userOption.options.outputClass"><![CDATA[PHP class for custom output format]]></item>
+               <item name="wcf.acp.pip.userOption.options.searchable"><![CDATA[User option value is searchable]]></item>
+               <item name="wcf.acp.pip.userOption.options.searchable.description"><![CDATA[Users can search this user option in the member search.]]></item>
+               <item name="wcf.acp.pip.userOption.options.isDisabled"><![CDATA[Disable User Option]]></item>
+               <item name="wcf.acp.pip.userOption.options.isDisabled.description"><![CDATA[The user option is not visible for users and its value cannot be set.]]></item>
+               <item name="wcf.acp.pip.userOption.options.optionType.description"><![CDATA[The option type determines the interface with which the value of the user group option is set and which (types of) values the option may have.]]></item>
+               <item name="wcf.acp.pip.userOption.options.messageObjectType"><![CDATA[Message Object Type]]></item>
+               <item name="wcf.acp.pip.userOption.options.messageObjectType.description"><![CDATA[The message object type is passed to the <code>wcf\system\html\input\HtmlInputProcessor</code> object used to process the user option value.]]></item>
+               <item name="wcf.acp.pip.userOption.options.contentPattern"><![CDATA[Content Pattern]]></item>
+               <item name="wcf.acp.pip.userOption.options.contentPattern.description"><![CDATA[The entered content pattern is used to extract specific parts of the user-entered value to be stored as the option value.]]></item>
+               <item name="wcf.acp.pip.userOption.options.contentPattern.error.invalid"><![CDATA[The entered regular expression is invalid.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.supportsReactions"><![CDATA[Supports Reactions]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.supportsReactions.description"><![CDATA[TODO]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.recentActivityEvent.supportsReactions"><![CDATA[Supports Reactions]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.recentActivityEvent.supportsReactions.description"><![CDATA[TODO]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.user.recentActivityEvent.data.title"><![CDATA[Recent Activity Event Data]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.text.disableAutocomplete"><![CDATA[Disable Autocomplete]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.optionType.text.disableAutocomplete.description"><![CDATA[Disables the browser’s autocomplete support for the input field.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName.error.noIntegerColumn"><![CDATA[The entered column name of the <code>{$tableName}</code> database table is no <code>INT</code> column.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName.error.nonExistent"><![CDATA[The entered column does not exist in the <code>{$tableName}</code> database table.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName.description"><![CDATA[Name of the property and column of <code>{$tableName}</code> database table used for the condition.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName"><![CDATA[Property Name]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.message.data.title"><![CDATA[Message Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.message.enableToc"><![CDATA[Generate Table of Contents]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.message.enableToc.description"><![CDATA[If selected, a table of contents is created for each message of this type.]]></item>
+       </category>
+       
+       <category name="wcf.acp.reactionType">
+               <item name="wcf.acp.reactionType.delete.confirmMessage"><![CDATA[Do you really want to delete the reaction type <span class="confirmationObject">{$reactionType->getTitle()}</span>?]]></item>
+               <item name="wcf.acp.reactionType.type"><![CDATA[Reaction Type]]></item>
+               <item name="wcf.acp.reactionType.type.positive"><![CDATA[Positiv]]></item>
+               <item name="wcf.acp.reactionType.type.negative"><![CDATA[Negativ]]></item>
+               <item name="wcf.acp.reactionType.type.neutral"><![CDATA[Neutral]]></item>
+               <item name="wcf.acp.reactionType.isDisabled"><![CDATA[Disable Reaction]]></item>
+               <item name="wcf.acp.reactionType.image"><![CDATA[Reaction File]]></item>
+               <item name="wcf.acp.reactionType.image.description"><![CDATA[The path is relative to “{$__wcf->getPath()}images/reaction/”.]]></item>
+       </category>
+       
        <category name="wcf.acp.rebuildData">
                <item name="wcf.acp.rebuildData"><![CDATA[Rebuild Data]]></item>
                <item name="wcf.acp.rebuildData.description"><![CDATA[In order to ensure consistency, e.g. after a data import, it is highly recommended to perform all the actions below in their respective order, starting from top to bottom.]]></item>
@@ -1724,6 +2293,7 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.search.provider.com.woltlab.wcf.page"><![CDATA[Pages]]></item>
                <item name="wcf.acp.search.provider.com.woltlab.wcf.article"><![CDATA[Articles]]></item>
                <item name="wcf.acp.search.provider.com.woltlab.wcf.box"><![CDATA[Boxes]]></item>
+               <item name="wcf.acp.search.provider.com.woltlab.wcf.trophy"><![CDATA[Trophies]]></item>
                <item name="wcf.acp.search.result.subtitle"><![CDATA[{implode from=$pieces item=piece glue=' » '}{$piece|language}{/implode}]]></item>
        </category>
        
@@ -1897,7 +2467,7 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.style.exportTemplates"><![CDATA[Export templates]]></item>
                <item name="wcf.acp.style.exportStyle"><![CDATA[Export Style]]></item>
                <item name="wcf.acp.style.exportStyle.asPackage"><![CDATA[Export as package]]></item>
-               <item name="wcf.acp.style.exportStyle.asPackage.description"><![CDATA[Choose if you want to export the style “{$style->styleName}” as a package. Packages can be installed through the package management or uploaded to the <a href="{@$__wcf->getPath()}acp/dereferrer.php?url=https://pluginstore.woltlab.com">WoltLab® Plugin-Store</a>.]]></item>
+               <item name="wcf.acp.style.exportStyle.asPackage.description"><![CDATA[Choose if you want to export the style “{$style->styleName}” as a package. Packages can be installed through the package management or uploaded to the <a href="https://pluginstore.woltlab.com">WoltLab® Plugin-Store</a>.]]></item>
                <item name="wcf.acp.style.exportStyle.components"><![CDATA[Options]]></item>
                <item name="wcf.acp.style.exportStyle.components.description"><![CDATA[Select components included in the export for the style “{$style->styleName}”.]]></item>
                <item name="wcf.acp.style.general"><![CDATA[Data]]></item>
@@ -2265,9 +2835,12 @@ full extend.]]></item>
                <item name="wcf.article.commentResponse"><![CDATA[Reply to Article Comment]]></item>
                <item name="wcf.article.sortField.comments"><![CDATA[Comments]]></item>
                <item name="wcf.article.sortField.cumulativeLikes"><![CDATA[Likes]]></item>
+               <item name="wcf.article.sortField.random"><![CDATA[Random]]></item>
                <item name="wcf.article.sortField.time"><![CDATA[Date]]></item>
                <item name="wcf.article.sortField.views"><![CDATA[Views]]></item>
                <item name="wcf.article.markAllAsRead"><![CDATA[Mark All Articles as Read]]></item>
+               <item name="wcf.article.showArticlesWritten"><![CDATA[Articles by {$user->username}]]></item>
+               <item name="wcf.article.recentActivity"><![CDATA[Wrote the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
        </category>
        
        <category name="wcf.attachment">
@@ -2329,8 +2902,6 @@ Allowed extensions: {', '|implode:$attachmentHandler->getFormattedAllowedExtensi
                <item name="wcf.bbcode.quote.edit.link"><![CDATA[Source]]></item>
                <item name="wcf.bbcode.quote.insert"><![CDATA[Insert Quote]]></item>
                <item name="wcf.bbcode.quote.title"><![CDATA[Quote from {$quoteAuthor}]]></item>
-               <item name="wcf.bbcode.quote.title.clickToSet"><![CDATA[(Click to set source)]]></item>
-               <item name="wcf.bbcode.quote.title.javascript"><![CDATA[{literal}{$quoteAuthor} wrote:{/literal}]]></item>
                <item name="wcf.bbcode.quote.simplified"><![CDATA[(Quote{if $cite} from {$cite}{/if})]]></item>
                <item name="wcf.bbcode.spoiler.hide"><![CDATA[Hide Spoiler]]></item>
                <item name="wcf.bbcode.spoiler.show"><![CDATA[Display Spoiler]]></item>
@@ -2398,6 +2969,8 @@ Errors are:
        
        <category name="wcf.clipboard">
                <item name="wcf.clipboard.item.unmarkAll"><![CDATA[Unmark All]]></item>
+               <item name="wcf.clipboard.item.markAll"><![CDATA[Mark All Objects]]></item>
+               <item name="wcf.clipboard.item.mark"><![CDATA[Mark Object]]></item>
                
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.delete"><![CDATA[Delete ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.delete.confirmMessage"><![CDATA[Do you really want to delete {#$count} article{if $count != 1}s{/if}?]]></item>
@@ -2411,6 +2984,7 @@ Errors are:
                <item name="wcf.clipboard.item.com.woltlab.wcf.media.delete"><![CDATA[Delete ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.media.delete.confirmMessage"><![CDATA[Do you really want to delete {#$count} file{if $count != 1}s{/if}?]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.media.insert"><![CDATA[Insert ({#$count})]]></item>
+               <item name="wcf.clipboard.item.com.woltlab.wcf.media.setCategory"><![CDATA[Edit Category ({#$count})]]></item>
                
                <item name="wcf.clipboard.item.com.woltlab.wcf.tag.delete"><![CDATA[Delete ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.tag.delete.confirmMessage"><![CDATA[Do you really want to delete {#$count} tag{if $count != 1}s{/if}?]]></item>
@@ -2856,6 +3430,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.global.button.fullscreen"><![CDATA[Full Screen Mode]]></item>
                <item name="wcf.global.button.hide"><![CDATA[Hide]]></item>
                <item name="wcf.global.button.insert"><![CDATA[Insert]]></item>
+               <item name="wcf.global.button.list"><![CDATA[List]]></item>
                <item name="wcf.global.button.next"><![CDATA[Next »]]></item>
                <item name="wcf.global.button.preview"><![CDATA[Preview]]></item>
                <item name="wcf.global.button.reply"><![CDATA[Reply]]></item>
@@ -2943,9 +3518,13 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.global.button.showNavigation"><![CDATA[Show Navigation]]></item>
                <item name="wcf.global.button.hideSidebar"><![CDATA[Hide Sidebar]]></item>
                <item name="wcf.global.button.showSidebar"><![CDATA[Show Sidebar]]></item>
+               <item name="wcf.global.button.showMenu"><![CDATA[Show Menu]]></item>
+               <item name="wcf.global.button.hideMenu"><![CDATA[Hide Menu]]></item>
        </category>
        
        <category name="wcf.global.form">
+               <item name="wcf.global.form.boolean.no"><![CDATA[No]]></item>
+               <item name="wcf.global.form.boolean.yes"><![CDATA[Yes]]></item>
                <item name="wcf.global.form.data"><![CDATA[General Information]]></item>
                <item name="wcf.global.form.error"><![CDATA[Please correct the erroneous fields marked below.]]></item>
                <item name="wcf.global.form.error.empty"><![CDATA[Please fill in this field.]]></item>
@@ -2962,6 +3541,34 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <!-- /deprecated since 2.1 -->
        </category>
        
+       <category name="wcf.form">
+               <item name="wcf.form.field.className"><![CDATA[Class]]></item>
+               <item name="wcf.form.field.className.description.interface"><![CDATA[The entered class (without leading backslash) must implement the interface <code>{$interface}</code>.]]></item>
+               <item name="wcf.form.field.className.description.parentClass"><![CDATA[The entered class (without leading backslash) must extend the class <code>{$parentClass}</code>.]]></item>
+               <item name="wcf.form.field.className.error.interface"><![CDATA[The entered class{if $language|isset} ({$language}){/if} does not implement the interface <code>{$interface}</code>.]]></item>
+               <item name="wcf.form.field.className.error.isInstantiable"><![CDATA[The entered class{if $language|isset} ({$language}){/if} is not instantiable.]]></item>
+               <item name="wcf.form.field.className.error.leadingBackslash"><![CDATA[The entered class name{if $language|isset} ({$language}){/if} must not have a leading backslash.]]></item>
+               <item name="wcf.form.field.className.error.nonExistent"><![CDATA[The entered class{if $language|isset} ({$language}){/if} does not exist.]]></item>
+               <item name="wcf.form.field.className.error.parentClass"><![CDATA[The entered class{if $language|isset} ({$language}){/if} does not extend <code>{$parentClass}</code>.]]></item>
+               <item name="wcf.form.field.itemList.error.separator"><![CDATA[The following items may contain no {if $separator === ','}comma{else if $separator === "\n"}newline{else}space{/if}: {implode from=$invalidItems item=item}“{$item}”{/implode}.]]></item>
+               <item name="wcf.form.field.numeric.error.maximum"><![CDATA[The entered value may not be less than {#$maximum}.]]></item>
+               <item name="wcf.form.field.numeric.error.minimum"><![CDATA[The entered value may not be greater than {#$minimum}.]]></item>
+               <item name="wcf.form.field.option"><![CDATA[Options]]></item>
+               <item name="wcf.form.field.option.error.nonExistent"><![CDATA[The following options do not exist: {implode from=$options item=option}<code>{$option}</code>{/implode}.]]></item>
+               <item name="wcf.form.field.showOrder"><![CDATA[Position]]></item>
+               <item name="wcf.form.field.showOrder.firstPosition"><![CDATA[(first position)]]></item>
+               <item name="wcf.form.field.text.error.maximumLength"><![CDATA[The entered text{if $language|isset} for language “{$language}”{/if} contains {#$length} characters but it may not be longer than {#$maximumLength} characters.]]></item>
+               <item name="wcf.form.field.text.error.minimumLength"><![CDATA[The entered text{if $language|isset} for language “{$language}”{/if} only contains {#$length} characters but it may not be shorter than {#$minimumLength} characters.]]></item>
+               <item name="wcf.form.field.user.error.maxmimumMultiples"><![CDATA[You may not enter more than {#$maximumCount} users but {#$count} user{if $count != 1}s are{else} is{/if} given.]]></item>
+               <item name="wcf.form.field.user.error.minimumMultiples"><![CDATA[You have to entered at least {#$minimumCount} users but only {#$count} user{if $count != 1}s are{else} is{/if} given.]]></item>
+               <item name="wcf.form.field.user.error.nonExistent"><![CDATA[{if $nonExistentUsernames|isset}The following users do not exist: {implode from=$nonExistentUsernames item=nonExistentUsername}“{$nonExistentUsername}”{/implode}.{else}The entered user does not exists.{/if}]]></item>
+               <item name="wcf.form.field.userGroupOption"><![CDATA[Permissions]]></item>
+               <item name="wcf.form.field.userGroupOption.error.nonExistent"><![CDATA[The following permissions do not exist: {implode from=$options item=option}<code>{$option}</code>{/implode}.]]></item>
+               <item name="wcf.form.field.username.error.invalid"><![CDATA[The entered username is invalid.]]></item>
+               <item name="wcf.form.field.username.error.notUnique"><![CDATA[The entered username is already in use.]]></item>
+               <item name="wcf.form.fieldValidator.dotSeparatedString.error.invalidSegments"><![CDATA[The following segments are invalid: {implode from=$invalidSegments key=segmentNumber item=segment}{if $segment !== ''}<code>{$segment}</code>{else}(empty){/if} (segment {#$segmentNumber + 1}){/implode}.]]></item>
+       </category>
+       
        <category name="wcf.imageViewer">
                <item name="wcf.imageViewer.button.enlarge"><![CDATA[Full Screen Mode]]></item>
                <item name="wcf.imageViewer.button.full"><![CDATA[View Source Image]]></item>
@@ -2990,8 +3597,8 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.like.jsTooltip"><![CDATA[{literal}{if $likes}{#$likes} Like{if $likes != 1}s{/if}{if $dislikes}, {/if}{/if}{if $dislikes}{#$dislikes} Dislike{if $dislikes != 1}s{/if}{/if}{/literal}]]></item>
                <item name="wcf.like.button.like"><![CDATA[Like]]></item>
                <item name="wcf.like.button.dislike"><![CDATA[Dislike]]></item>
-               <item name="wcf.like.likesReceived"><![CDATA[Likes Received]]></item>
-               <item name="wcf.like.showLikesReceived"><![CDATA[Likes Received by {$user->username}]]></item>
+               <item name="wcf.like.likesReceived"><![CDATA[Reputation]]></item>
+               <item name="wcf.like.showLikesReceived"><![CDATA[Reactions Received by {$user->username}]]></item>
                <item name="wcf.like.likesGiven"><![CDATA[Likes Given]]></item>
                <item name="wcf.like.dislikesReceived"><![CDATA[Dislikes Received]]></item>
                <item name="wcf.like.dislikesGiven"><![CDATA[Dislikes Given]]></item>
@@ -3005,14 +3612,20 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.like.likes.noMoreEntries"><![CDATA[There are not any new likes at the moment.]]></item>
                <item name="wcf.like.dislikes.more"><![CDATA[More Dislikes]]></item>
                <item name="wcf.like.dislikes.noMoreEntries"><![CDATA[There are not any new dislikes at the moment.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.user.profileComment"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on <a href="{$comment->getLink()}">{$user->username}’s wall</a>.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.user.profileComment.response"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on <a href="{$response->getLink()}">{$user->username}’s wall</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.user.profileComment"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on <a href="{$comment->getLink()}">{$user->username}’s wall</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.user.profileComment.response"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on <a href="{$response->getLink()}">{$user->username}’s wall</a>.]]></item>
                <item name="wcf.like.objectType.com.woltlab.wcf.likeableArticle"><![CDATA[Article]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.likeableArticle"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.articleComment"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the article <a href="{$comment->getLink()}">{$articleContent->getTitle()}</a>.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.articleComment.response"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the article <a href="{$response->getLink()}">{$articleContent->getTitle()}</a>.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.pageComment"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the page <a href="{$comment->getLink()}">{$page->getTitle()}</a>.]]></item>
-               <item name="wcf.like.title.com.woltlab.wcf.pageComment.response"><![CDATA[{if $like->isDislike()}Dislikes{else}Likes{/if} the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the page <a href="{$response->getLink()}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.likeableArticle"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.articleComment"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the article <a href="{$comment->getLink()}">{$articleContent->getTitle()}</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.articleComment.response"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the article <a href="{$response->getLink()}">{$articleContent->getTitle()}</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.pageComment"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the page <a href="{$comment->getLink()}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.like.title.com.woltlab.wcf.pageComment.response"><![CDATA[Reacted with “{$like->getReactionType()->getTitle()}” to the response by {if $responseAuthor}<a href="{link controller='User' object=$responseAuthor}{/link}">{$responseAuthor->username}</a>{else}a guest{/if} on the comment by {if $commentAuthor}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}a guest{/if} on the page <a href="{$response->getLink()}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.like.reaction.noMoreEntries"><![CDATA[There are not any new reactions at the moment.]]></item>
+               <item name="wcf.like.reaction.more"><![CDATA[More Reactions]]></item>
+               <item name="wcf.like.reactionsReceived"><![CDATA[Reactions Received]]></item>
+               <item name="wcf.like.reactionsGiven"><![CDATA[Reactions Given]]></item>
+               <item name="wcf.like.reactionReputation"><![CDATA[Reputation from Reactions]]></item>
+               <item name="wcf.like.reputation"><![CDATA[Reputation]]></item>
        </category>
        
        <category name="wcf.map">
@@ -3038,6 +3651,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.media.button.insert"><![CDATA[Insert]]></item>
                <item name="wcf.media.button.select"><![CDATA[Select]]></item>
                <item name="wcf.media.caption"><![CDATA[Caption]]></item>
+               <item name="wcf.media.caption.enableHtml"><![CDATA[Enable HTML code in caption]]></item>
                <item name="wcf.media.category.choose"><![CDATA[Categories]]></item>
                <item name="wcf.media.categoryID"><![CDATA[Category]]></item>
                <item name="wcf.media.chooseImage"><![CDATA[Select Image]]></item>
@@ -3057,6 +3671,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.media.languageID"><![CDATA[Language]]></item>
                <item name="wcf.media.manager"><![CDATA[Manage Media]]></item>
                <item name="wcf.media.media"><![CDATA[Media]]></item>
+               <item name="wcf.media.media.pageTitle"><![CDATA[{if $__wcf->session->getPermission('admin.content.cms.canOnlyAccessOwnMedia')}Own {/if}Media]]></item>
                <item name="wcf.media.search.cancel"><![CDATA[Cancel Search]]></item>
                <item name="wcf.media.search.placeholder"><![CDATA[Search Files]]></item>
                <item name="wcf.media.upload.error.noImage"><![CDATA[The uploaded file is no image.]]></item>
@@ -3066,6 +3681,9 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.media.uploadTime"><![CDATA[Upload Date]]></item>
                <item name="wcf.media.search.noResults"><![CDATA[The search returned no results.]]></item>
                <item name="wcf.media.search.info.searchStringThreshold"><![CDATA[The search term must contain at least {#$minSearchLength} character{if $minSearchLength > 1}s{/if}.]]></item>
+               <item name="wcf.media.setCategory"><![CDATA[Edit Category]]></item>
+               <item name="wcf.media.downloads"><![CDATA[Downloads]]></item>
+               <item name="wcf.media.lastDownloadTime"><![CDATA[Last Download]]></item>
        </category>
        
        <category name="wcf.message">
@@ -3112,6 +3730,9 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.message.error.tooLong"><![CDATA[The message is too long, must be under {#$maxTextLength} characters.]]></item>
                <item name="wcf.message.status.deleted"><![CDATA[Deleted]]></item>
                <item name="wcf.message.status.disabled"><![CDATA[Disabled]]></item>
+               <item name="wcf.message.toc"><![CDATA[Contents]]></item>
+               <item name="wcf.message.toc.hide"><![CDATA[hide]]></item>
+               <item name="wcf.message.toc.show"><![CDATA[show]]></item>
        </category>
        
        <category name="wcf.menu">
@@ -3171,6 +3792,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.moderation.type.com.woltlab.wcf.comment.comment"><![CDATA[Comment]]></item>
                <item name="wcf.moderation.type.com.woltlab.wcf.comment.response"><![CDATA[Comment Reply]]></item>
                <item name="wcf.moderation.type.com.woltlab.wcf.user"><![CDATA[User Profile]]></item>
+               <item name="wcf.moderation.type.com.woltlab.wcf.article"><![CDATA[Article]]></item>
                <item name="wcf.moderation.showAll"><![CDATA[Display All Items]]></item>
                <item name="wcf.moderation.showDeletedContent"><![CDATA[Display Deleted Content]]></item>
                <item name="wcf.moderation.deletedContent.objectTypes"><![CDATA[Deleted Content]]></item>
@@ -3277,6 +3899,11 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.page.search.results"><![CDATA[Search Results]]></item>
                <item name="wcf.page.comment"><![CDATA[Page Comment]]></item>
                <item name="wcf.page.commentResponse"><![CDATA[Reply to Page Comment]]></item>
+               <item name="wcf.page.recentActivity.pageComment"><![CDATA[Commented on page <a href="{$page->getLink()}#comment{$commentID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.page.recentActivity.pageCommentResponse"><![CDATA[Replied to a comment by <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> on page <a href="{$page->getLink()}#comment{@$commentID}/response{@$responseID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.page.sidebar.left"><![CDATA[Left Sidebar]]></item>
+               <item name="wcf.page.sidebar.right"><![CDATA[Right Sidebar]]></item>
+               <item name="wcf.page.breadcrumb"><![CDATA[Breadcrumb]]></item>
        </category>
        
        <category name="wcf.acp.page">
@@ -3330,6 +3957,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.acp.page.addPageToMainMenu"><![CDATA[Add page to main menu]]></item>
                <item name="wcf.acp.page.lastVersion"><![CDATA[There are <a href="{link controller='VersionTrackerList' objectType='com.woltlab.wcf.page' objectID=$page->pageID}{/link}">previous versions</a> of this page, the last change was by <a href="{link controller='UserEdit' id=$lastVersion->userID}{/link}">{$lastVersion->username}</a> ({@$lastVersion->time|time}).]]></item>
                <item name="wcf.acp.page.originIsNotSystem"><![CDATA[Custom pages only]]></item>
+               <item name="wcf.acp.page.enableShareButtons"><![CDATA[Enable the share buttons for this page]]></item>
        </category>
        
        <category name="wcf.paidSubscription">
@@ -3379,6 +4007,21 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.poll.endTimeInfo"><![CDATA[Poll ends on {@$poll->endTime|plainTime}]]></item>
        </category>
        
+       <category name="wcf.reactions">
+               <item name="wcf.reactions.summary.title"><![CDATA[Reactions]]></item>
+               <item name="wcf.reactions.summary.noReactions"><![CDATA[There are not any reactions at the moment.]]></item>
+               <item name="wcf.reactions.summary.listReactions"><![CDATA[List Reactions]]></item>
+               <item name="wcf.reactions.react"><![CDATA[React]]></item>
+       </category>
+       
+       <category name="wcf.reactionType">
+               <item name="wcf.reactionType.title1"><![CDATA[Like]]></item>
+               <item name="wcf.reactionType.title2"><![CDATA[Haha]]></item>
+               <item name="wcf.reactionType.title3"><![CDATA[Sad]]></item>
+               <item name="wcf.reactionType.title4"><![CDATA[Confused]]></item>
+               <item name="wcf.reactionType.title5"><![CDATA[Thanks!]]></item>
+       </category>
+       
        <category name="wcf.recaptcha">
                <item name="wcf.recaptcha.title"><![CDATA[Verification (“reCAPTCHA”)]]></item>
                <item name="wcf.recaptcha.description"><![CDATA[Please enter the letters that are displayed in the picture below (letters are not case-sensitive). If you cannot identify the captcha even after reloading it, please contact the administrator.]]></item>
@@ -3674,6 +4317,7 @@ not register with us.]]></item>
                <item name="wcf.user.sortField.registrationDate"><![CDATA[Registration Date]]></item>
                <item name="wcf.user.sortField.username"><![CDATA[Username]]></item>
                <item name="wcf.user.sortField.lastActivityTime"><![CDATA[Last Activity]]></item>
+               <item name="wcf.user.articles"><![CDATA[Articles]]></item>
        </category>
        
        <category name="wcf.user.menu">
@@ -3786,6 +4430,7 @@ Open the link below to access the user profile:
                <item name="wcf.acp.trophy.category"><![CDATA[Category]]></item>
                <item name="wcf.acp.trophy.isDisabled"><![CDATA[Disable Trophy]]></item>
                <item name="wcf.acp.trophy.awardAutomatically"><![CDATA[Award trophy automatically]]></item>
+               <item name="wcf.acp.trophy.revokeAutomatically"><![CDATA[Revoke trophy automatically if the conditions are not longer fulfilled]]></item>
                <item name="wcf.acp.trophy.type"><![CDATA[Trophy Type]]></item>
                <item name="wcf.acp.trophy.type.badge"><![CDATA[Badge]]></item>
                <item name="wcf.acp.trophy.type.imageUpload"><![CDATA[Image]]></item>
@@ -3809,6 +4454,8 @@ Open the link below to access the user profile:
                <item name="wcf.acp.trophy.userTrophy.delete.confirmMessage"><![CDATA[Do you really want to delete the trophy <span class="confirmationObject">{$userTrophy->getTrophy()->getTitle()}</span> from <span class="confirmationObject">{$userTrophy->getUserProfile()->username}</span>?]]></item>
                <item name="wcf.acp.trophy.error.noCategories"><![CDATA[Please <a href="{link controller='TrophyCategoryAdd'}{/link}">add a category</a> before creating trophies.]]></item>
                <item name="wcf.acp.trophy.error.noSuitableTrophies"><![CDATA[Please <a href="{link controller='TrophyAdd'}{/link}">add a trophy</a> that is not automatically awarded before you award trophies.]]></item>
+               <item name="wcf.acp.trophy.trophyUseHtml"><![CDATA[Enable HTML code in the description]]></item>
+               <item name="wcf.acp.trophy.showOrder.description"><![CDATA[Choose display order of trophies.]]></item>
        </category>
        
        <category name="wcf.user.usersOnline">
@@ -3849,6 +4496,9 @@ Open the link below to access the user profile:
                <item name="wcf.user.recentActivity.com.woltlab.wcf.articleComment.recentActivityEvent"><![CDATA[Comment (Article)]]></item>
                <item name="wcf.user.recentActivity.com.woltlab.wcf.articleComment.response.recentActivityEvent"><![CDATA[Reply (Article)]]></item>
                <item name="wcf.user.recentActivity.com.woltlab.wcf.userTrophy.recentActivityEvent.trophyReceived"><![CDATA[Trophy]]></item>
+               <item name="wcf.user.recentActivity.com.woltlab.wcf.page.recentActivityEvent"><![CDATA[Comment (Page)]]></item>
+               <item name="wcf.user.recentActivity.com.woltlab.wcf.page.response.recentActivityEvent"><![CDATA[Reply (Page)]]></item>
+               <item name="wcf.user.recentActivity.com.woltlab.wcf.article.recentActivityEvent"><![CDATA[Article]]></item>
                <item name="wcf.user.recentActivity.condition.excludedObjectType"><![CDATA[Excluded Activities]]></item>
                <item name="wcf.user.recentActivity.scope.all"><![CDATA[All Activities]]></item>
                <item name="wcf.user.recentActivity.scope.followedUsers"><![CDATA[Filter by Followed Users]]></item>
@@ -3927,7 +4577,7 @@ Open the link below to access the user profile:
                <item name="wcf.user.condition.groupIDs.description"><![CDATA[User is a member of the selected user group(s).]]></item>
                <item name="wcf.user.condition.languages"><![CDATA[Language(s)]]></item>
                <item name="wcf.user.condition.lastActivityTime"><![CDATA[Last Activity]]></item>
-               <item name="wcf.user.condition.likesReceived"><![CDATA[Likes Received]]></item>
+               <item name="wcf.user.condition.likesReceived"><![CDATA[Positive Reactions]]></item>
                <item name="wcf.user.condition.mobileBrowser"><![CDATA[Mobile Device or Desktop]]></item>
                <item name="wcf.user.condition.mobileBrowser.usesMobileBrowser"><![CDATA[Uses mobile device]]></item>
                <item name="wcf.user.condition.mobileBrowser.usesMobileBrowser.error.conflict"><![CDATA[You cannot simultaneously select “Uses mobile device” and “Uses desktop”.]]></item>
@@ -3950,6 +4600,9 @@ Open the link below to access the user profile:
                <item name="wcf.user.condition.notUserTrophyIDs.description"><![CDATA[User has not received the selected trophies.]]></item>
                <item name="wcf.user.condition.notUserTrophyIDs.error.userTrophyIntersection"><![CDATA[The selected trophies in “User has Trophy” and “User does not have Trophy” are conflicting.]]></item>
                <item name="wcf.user.condition.trophyPoints"><![CDATA[Trophies]]></item>
+               <item name="wcf.user.condition.negativeReactionsReceived"><![CDATA[Negative Reactions]]></item>
+               <item name="wcf.user.condition.neutralReactionsReceived"><![CDATA[Neutral Reactions]]></item>
+               <item name="wcf.user.condition.userReputation"><![CDATA[Reputation from Reactions]]></item>
        </category>
        
        <category name="wcf.user.coverPhoto">
@@ -4050,10 +4703,10 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.notification.comment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} wrote comments on <a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}{/link}">your wall</a>.]]></item>
                <item name="wcf.user.notification.comment.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a comment{else}comments{/if} on your wall [URL:{link controller='User' object=$notificationContent[variables][owner] isEmail=true}#wall/comment{@$commentID}{/link}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
                <item name="wcf.user.notification.comment.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a comment{else}comments{/if} on <a href="{link controller='User' object=$notificationContent[variables][owner] isEmail=true}#wall/comment{@$commentID}{/link}">your wall</a>:</p>]]></item>
-               <item name="wcf.user.notification.comment.like.title"><![CDATA[Likes a comment (Wall)]]></item>
-               <item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} users like your comment (Wall)]]></item>
-               <item name="wcf.user.notification.comment.like.message"><![CDATA[{@$author->getAnchorTag()} likes your comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
-               <item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} like your comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
+               <item name="wcf.user.notification.comment.like.title"><![CDATA[Reaction to a comment (Wall)]]></item>
+               <item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} users reacted to your comment (Wall)]]></item>
+               <item name="wcf.user.notification.comment.like.message"><![CDATA[{@$author->getAnchorTag()} reacted to your comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}{/link}">{$owner->username}’s wall</a>{/if} ({implode from=$reactions key=reactionID item=count}{#$count}× {@$__wcf->getReactionHandler()->getReactionTypeByID($reactionID)->renderIcon()}{/implode}).]]></item>
+               <item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} reacted to your comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}{/link}">{$owner->username}’s wall</a>{/if} ({implode from=$reactions key=reactionID item=count}{#$count}× {@$__wcf->getReactionHandler()->getReactionTypeByID($reactionID)->renderIcon()}{/implode}).]]></item>
                <item name="wcf.user.notification.commentResponse.title"><![CDATA[New Reply (Wall)]]></item>
                <item name="wcf.user.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} new replies (Wall)]]></item>
                <item name="wcf.user.notification.commentResponse.message"><![CDATA[{if !$author->userID}A guest{else}{@$author->getAnchorTag()}{/if} wrote a reply to your comment on <a href="{link controller='User' object=$owner}#wall/comment{@$commentID}/response{@$responseID}{/link}">{if $owner->userID == $__wcf->getUser()->userID}your{else}{$owner->username}’s{/if} wall</a>.]]></item>
@@ -4061,9 +4714,9 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on {if $mailbox->getUser()->userID == $notificationContent[variables][owner]->userID}your{else}{$notificationContent[variables][owner]->username}’s{/if} wall [URL:{link controller='User' object=$notificationContent[variables][owner] isEmail=true}#wall/comment{@$commentID}/response{@$responseID}{/link}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
                <item name="wcf.user.notification.commentResponse.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on <a href="{link controller='User' object=$notificationContent[variables][owner] isEmail=true}#wall/comment{@$commentID}/response{@$responseID}{/link}">{if $mailbox->getUser()->userID == $notificationContent[variables][owner]->userID}your{else}{$notificationContent[variables][owner]->username}’s{/if} wall</a>:</p>]]></item>
                <item name="wcf.user.notification.commentResponse.like.title"><![CDATA[Likes your reply to a comment (Wall)]]></item>
-               <item name="wcf.user.notification.commentResponse.like.title.stacked"><![CDATA[{#$count} users like your reply to a comment (Wall)]]></item>
-               <item name="wcf.user.notification.commentResponse.like.message"><![CDATA[{@$author->getAnchorTag()} likes your reply to a comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}/response{@$responseID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}/response{@$responseID}{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
-               <item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} like your reply to a comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}/response{@$responseID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}/response{@$responseID}{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
+               <item name="wcf.user.notification.commentResponse.like.title.stacked"><![CDATA[{#$count} users reacted to your reply to a comment (Wall)]]></item>
+               <item name="wcf.user.notification.commentResponse.like.message"><![CDATA[{@$author->getAnchorTag()} reacted to your reply to a comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}/response{@$responseID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}/response{@$responseID}{/link}">{$owner->username}’s wall</a>{/if} ({implode from=$reactions key=reactionID item=count}{#$count}× {@$__wcf->getReactionHandler()->getReactionTypeByID($reactionID)->renderIcon()}{/implode}).]]></item>
+               <item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} reacted to your reply to a comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}/response{@$responseID}{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall/comment{@$commentID}/response{@$responseID}{/link}">{$owner->username}’s wall</a>{/if} ({implode from=$reactions key=reactionID item=count}{#$count}× {@$__wcf->getReactionHandler()->getReactionTypeByID($reactionID)->renderIcon()}{/implode}).]]></item>
                <item name="wcf.user.notification.commentResponseOwner.title"><![CDATA[New Reply (Wall)]]></item>
                <item name="wcf.user.notification.commentResponseOwner.title.stacked"><![CDATA[{#$timesTriggered} new replies (Wall)]]></item>
                <item name="wcf.user.notification.commentResponseOwner.message"><![CDATA[{if !$author->userID}A guest{else}{@$author->getAnchorTag()}{/if} wrote a reply to {$commentAuthor->username}’s comment on <a href="{link controller='User' object=$__wcf->getUser()}#wall/comment{@$commentID}/response{@$responseID}{/link}">your wall</a>.]]></item>
@@ -4073,8 +4726,8 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.notification.comment"><![CDATA[Notify me of new comments on my wall]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.response.notification.commentResponse"><![CDATA[Notify me of new replies to my comments]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.response.notification.commentResponseOwner"><![CDATA[Notify me of new replies to comments on my wall]]></item>
-               <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.like.notification.like"><![CDATA[Notify me when my comments are liked]]></item>
-               <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.response.like.notification.like"><![CDATA[Notify me when my replies to comments are liked]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.like.notification.like"><![CDATA[Notify me when someone reacted to my comments]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.user.profileComment.response.like.notification.like"><![CDATA[Notify me when someone reacted to my replies to comments]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.paidSubscription.user.expiring"><![CDATA[Notify me before a subscription will expire]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.userTrophy.notification.received"><![CDATA[Notify me when I receive a trophy]]></item>
                <item name="wcf.user.notification.trophy.received.title"><![CDATA[Trophy received]]></item>
@@ -4083,6 +4736,56 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.notification.com.woltlab.wcf.moderation"><![CDATA[Moderation]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.moderation.queue.notification.comment"><![CDATA[Notify me when new comments are written in moderation]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.moderation.queue.response.notification.commentResponse"><![CDATA[Notify me when new replies to comments are written in moderation]]></item>
+               
+               <item name="wcf.user.notification.com.woltlab.wcf.page"><![CDATA[Page]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.page.notification.comment"><![CDATA[Notify me when new comments are written on pages]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.page.response.notification.commentResponse"><![CDATA[Notify me when new replies to comments are written on pages]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.page.response.notification.commentResponseOwner"><![CDATA[Notify me when someone replies to my comments on pages]]></item>
+               <item name="wcf.user.notification.pageComment.title"><![CDATA[New Comment (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.title.stacked"><![CDATA[{#$timesTriggered} new comments (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.message"><![CDATA[{if !$author->userID}A guest{else}{@$author->getAnchorTag()}{/if} wrote a comment on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} wrote comments on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a comment{else}comments{/if} on the page [URL:{$notificationContent[variables][page]->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.pageComment.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a comment{else}comments{/if} on the page <a href="{$notificationContent[variables][page]->getLink()}#comment{@$commentID}">{$notificationContent[variables][page]->getTitle()}</a>:</p>]]></item>
+               <item name="wcf.user.notification.pageComment.response.title"><![CDATA[New Reply (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.response.title.stacked"><![CDATA[{#$timesTriggered} new replies (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.response.message"><![CDATA[{if !$author->userID}A guest{else}{@$author->getAnchorTag()}{/if} wrote a reply to {if $commentAuthor->userID}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}{$commentAuthor->username}{/if}’s comment on the page <a href="{$page->getLink()}#comment{@$commentID}/response{@$responseID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.response.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} replied to {if $commentAuthor->userID}<a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a>{else}{$commentAuthor->username}{/if}’s comment on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.response.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to {@$notificationContent[variables][commentAuthor]->username}’s comment on the page [URL:{$notificationContent[variables][page]->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.pageComment.response.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to {@$notificationContent[variables][commentAuthor]->username}’s comment on the page <a href="{$notificationContent[variables][page]->getLink()}#comment{@$commentID}">{$notificationContent[variables][page]->getTitle()}</a>:</p>]]></item><item name="wcf.user.notification.pageComment.response.title"><![CDATA[New Reply (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} new replies (Page)]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.message"><![CDATA[{if !$author->userID}A guest{else}{@$author->getAnchorTag()}{/if} wrote a reply to your comment on the page <a href="{$page->getLink()}#comment{@$commentID}/response{@$responseID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} replied to your comment on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on the page [URL:{$notificationContent[variables][page]->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on the page <a href="{$notificationContent[variables][page]->getLink()}#comment{@$commentID}">{$notificationContent[variables][page]->getTitle()}</a>:</p>]]></item>
+               
+               <item name="wcf.user.notification.com.woltlab.wcf.article.comment.notification.comment"><![CDATA[Notify me of new comments on my articles]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.article.comment.response.notification.commentResponse"><![CDATA[Notify me of new replies to my comments]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.article.comment.response.notification.commentResponseOwner"><![CDATA[Notify me of new replies to comments on my articles]]></item>
+               <item name="wcf.user.notification.articleComment.title"><![CDATA[New Comment (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.title.stacked"><![CDATA[{#$timesTriggered} new Comments (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.message"><![CDATA[{if $author->userID}{@$author->getAnchorTag()}{else}A guest{/if} commented on your article <a href="{link controller='Article' object=$article}#comments/comment{@$commentID}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} commented on your article <a href="{link controller='Article' object=$article}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.mail.plaintext"><![CDATA[{@$authorList} commented on your article “{@$article->getTitle()}” [URL:{link controller='Article' object=$article isEmail=true}#comment{@$commentID}{/link}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.articleComment.mail.html"><![CDATA[<p>{@$authorList} commented on your article <a href="{link controller='Article' object=$article isEmail=true}#comments/comment{@$commentID}{/link}">{$article->getTitle()}</a>:</p>]]></item>
+               <item name="wcf.user.notification.articleComment.response.title"><![CDATA[New Reply (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.response.title.stacked"><![CDATA[{#$timesTriggered} new Replies (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.response.message"><![CDATA[{if $author->userID}{@$author->getAnchorTag()}{else}A guest{/if} replied to your comment on the article <a href="{link controller='Article' object=$article}#comments/comment{@$commentID}/response{@$responseID}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.response.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} replied to your comment on the article <a href="{link controller='Article' object=$article}#comments/comment{@$commentID}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.response.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on the article “{@$article->getTitle()}” [URL:{link controller='Article' object=$article isEmail=true}#comments/comment{@$commentID}/response{@$responseID}{/link}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.articleComment.response.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to your comment on the article <a href="{link controller='Article' object=$article isEmail=true}#comments/comment{@$commentID}/response{@$responseID}{/link}">{$article->getTitle()}</a>:</p>]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.title"><![CDATA[New Reply (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} new Replies (Article)]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.message"><![CDATA[{if $author->userID}{@$author->getAnchorTag()}{else}A guest{/if} replied to a comment by {$commentAuthor->username} on your article <a href="{link controller='Article' object=$article}#comments/comment{@$commentID}/response{@$responseID}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} replied to a comment by {if $author->userID}<a href="{link controller='User' object=$author}{/link}" class="userLink" data-user-id="{@$author->userID}">{$author->username}</a>{else}{$author->username}{/if} on your article <a href="{link controller='Article' object=$article}#comments/comment{@$commentID}{/link}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to {@$notificationContent[variables][commentAuthor]->username}’s{if $notificationContent[variables][commentAuthor]->userID} [URL:{link controller='User' object=$notificationContent[variables][commentAuthor] isEmail=true}{/link}]{/if} comment on your article “{@$article->getTitle()}” [URL:{link controller='Article' object=$article isEmail=true}#comments/comment{@$commentID}/response{@$responseID}{/link}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
+               <item name="wcf.user.notification.articleComment.responseOwner.mail.html"><![CDATA[<p>{@$authorList} wrote {if $count == 1 && !$guestTimesTriggered}a reply{else}replies{/if} to {if $notificationContent[variables][commentAuthor]->userID}<a href="{link controller='User' object=$notificationContent[variables][commentAuthor] isEmail=true}{/link}">{$notificationContent[variables][commentAuthor]->username}</a>{else}{$notificationContent[variables][commentAuthor]->username}{/if}’s comment on your article <a href="{link controller='Article' object=$article isEmail=true}#comments/comment{@$commentID}/response{@$responseID}{/link}">{$article->getTitle()}</a>:</p>]]></item>
+               
+               <item name="wcf.user.notification.com.woltlab.wcf.article.notification.article"><![CDATA[Notify me of new articles in watched categories]]></item>
+               <item name="wcf.user.notification.article.title"><![CDATA[New Article]]></item>
+               <item name="wcf.user.notification.article.message"><![CDATA[{if $author->userID}{@$author->getAnchorTag()}{else}A guest{/if} wrote the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
+               <item name="wcf.user.notification.article.mail.plaintext"><![CDATA[{if $event->getAuthor()->userID}{@$event->getAuthor()->username} [URL:{link controller='User' object=$event->getAuthor() isEmail=true}{/link}]{else}A guest{/if} wrote the article “{@$notificationContent[variables][articleContent]->getTitle()}” [URL:{link controller='Article' object=$notificationContent[variables][articleContent] isEmail=true}{/link}]:]]></item>
+               <item name="wcf.user.notification.article.mail.html"><![CDATA[<p>{if $event->getAuthor()->userID}<a href="{link controller='User' object=$event->getAuthor() isEmail=true}{/link}">{$event->getAuthor()->username}</a>{else}A guest{/if} wrote the article <a href="{link controller='Article' object=$notificationContent[variables][articleContent] isEmail=true}{/link}">{$notificationContent[variables][articleContent]->getTitle()}</a>:</p>]]></item>
        </category>
        
        <category name="wcf.user.profile">
@@ -4099,7 +4802,7 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.profile.content.wall.commentResponse"><![CDATA[Reply to wall comment]]></item>
                <item name="wcf.user.profile.content.wall.noEntries"><![CDATA[There are not any comments at the moment.]]></item>
                <item name="wcf.user.profile.menu.wall"><![CDATA[Wall]]></item>
-               <item name="wcf.user.profile.menu.likes"><![CDATA[Likes]]></item>
+               <item name="wcf.user.profile.menu.likes"><![CDATA[Reactions]]></item>
                <item name="wcf.user.profile.recentActivity.profileComment"><![CDATA[Wrote a comment on <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}">{$user->username}’s wall</a>.]]></item>
                <item name="wcf.user.profile.recentActivity.profileCommentResponse"><![CDATA[Replied to a comment by <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> on <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}/response{@$responseID}">{$user->username}’s wall</a>.]]></item>
                <item name="wcf.user.profile.report"><![CDATA[Report User Profile]]></item>
@@ -4107,10 +4810,14 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.profile.user"><![CDATA[User]]></item>
                <item name="wcf.user.profile.management"><![CDATA[Management]]></item>
                <item name="wcf.user.profile.customization"><![CDATA[Customization]]></item>
+               <item name="wcf.user.profile.title"><![CDATA[User profile of {$user->username}]]></item>
        </category>
        
        <category name="wcf.user.objectWatch">
                <item name="wcf.user.objectWatch.manageSubscription"><![CDATA[Manage Subscription]]></item>
+               <item name="wcf.user.objectWatch.subscribe.com.woltlab.wcf.article.category"><![CDATA[Watch this category]]></item>
+               <item name="wcf.user.objectWatch.enableNotification.com.woltlab.wcf.article.category"><![CDATA[Notify me of new articles.]]></item>
+               <item name="wcf.user.objectWatch.unsubscribe.com.woltlab.wcf.article.category"><![CDATA[Unwatch this category]]></item>
        </category>
        
        <category name="wcf.user.option">