In-Profile moderation feature for cover photos
[GitHub/WoltLab/WCF.git] / wcfsetup / install / lang / en.xml
index e46bb39668577f1cf125791cbe05c951f7fac75d..a0475abcc1e31810e7ddc2b080012e0343fad406 100644 (file)
@@ -6,7 +6,6 @@
                <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>
                <item name="wcf.acl.allowAll"><![CDATA[Content Can be Accessed by Everyone]]></item>
-               
                <item name="wcf.acl.option.deny"><![CDATA[Deny]]></item>
                <item name="wcf.acl.option.fullAccess"><![CDATA[Full Access]]></item>
                <item name="wcf.acl.option.grant"><![CDATA[Grant]]></item>
                <item name="wcf.acl.search.description"><![CDATA[Enter username or user group …]]></item>
                <item name="wcf.acl.search.user.description"><![CDATA[Enter username …]]></item>
        </category>
-       
        <category name="wcf.acl.option">
                <item name="wcf.acl.option.com.woltlab.wcf.label.canViewLabel"><![CDATA[Can view labels]]></item>
                <item name="wcf.acl.option.com.woltlab.wcf.label.canSetLabel"><![CDATA[Can set labels]]></item>
                <item name="wcf.acl.option.com.woltlab.wcf.article.category.canReadArticle"><![CDATA[Can read articles]]></item>
        </category>
-       
        <category name="wcf.acp.ad">
                <item name="wcf.acp.ad.ad"><![CDATA[Ads]]></item>
                <item name="wcf.acp.ad.ad.description"><![CDATA[Enter the ad’s HTML code here.]]></item>
@@ -48,7 +45,6 @@
                <item name="wcf.acp.ad.location.com.woltlab.wcf.footer.bottom"><![CDATA[End of Page]]></item>
                <item name="wcf.acp.ad.showOrder.description"><![CDATA[Choose display order of ads.]]></item>
        </category>
-       
        <category name="wcf.acp.application">
                <item name="wcf.acp.application.cookie"><![CDATA[Cookie Settings]]></item>
                <item name="wcf.acp.application.cookie.warning"><![CDATA[The setting below is used to establish a persistent login for your website; Keep in mind to update this value whenever the domain name changes. If you are unsure which value you need to provide, you can safely copy the value of “Domain”.]]></item>
@@ -68,7 +64,6 @@
                <item name="wcf.acp.application.landingPage.description"><![CDATA[Optional: This page will be shown when a user is navigating to this app.]]></item>
                <item name="wcf.acp.application.list"><![CDATA[Installed Applications]]></item>
        </category>
-       
        <category name="wcf.acp.article">
                <item name="wcf.acp.article.add"><![CDATA[Add Article]]></item>
                <item name="wcf.acp.article.edit"><![CDATA[Edit Article]]></item>
                <item name="wcf.acp.article.trash.notice"><![CDATA[This article has been moved to the trash bin and is currently hidden from view.]]></item>
                <item name="wcf.acp.article.views"><![CDATA[Views]]></item>
                <item name="wcf.acp.article.lastVersion"><![CDATA[There are <a href="{link controller='VersionTrackerList' objectType='com.woltlab.wcf.article' objectID=$article->articleID}{/link}">previous versions</a> of this article, 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.article.isDeleted"><![CDATA[Deleted]]></item>
        </category>
-       
        <category name="wcf.acp.attachment">
                <item name="wcf.acp.attachment.list"><![CDATA[Attachments]]></item>
                <item name="wcf.acp.attachment.stats"><![CDATA[<ul class="inlineList dotSeparated"><li>{#$stats.count} Attachment{if $stats.count != 1}s{/if}</li><li>{@$stats.size|filesize}</li><li>{#$stats.downloads} Download{if $stats.downloads != 1}s{/if}</li></ul>]]></item>
        </category>
-       
        <category name="wcf.acp.bbcode">
                <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.isSourceCode"><![CDATA[Content represents source code]]></item>
                <item name="wcf.acp.bbcode.isSourceCode.description"><![CDATA[Disables conversion of BBCodes and smilies.]]></item>
                <item name="wcf.acp.bbcode.list"><![CDATA[BBCodes]]></item>
-               
                <item name="wcf.acp.bbcode.mediaProvider.add"><![CDATA[Add Media Provider]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.className"><![CDATA[PHP Class Name]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.className.error.notFound"><![CDATA[Unable to find specified class.]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.delete.sure"><![CDATA[Do you really want to delete the media provider <span class="confirmationObject">{$mediaProvider->title}</span>?]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.edit"><![CDATA[Edit Media Provider]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.html"><![CDATA[HTML Code]]></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.html.description"><![CDATA[{literal}Enter the media’s HTML code here. Variables are recognized as <kbd>{$variable}</kbd> and will be replaced with the regular expression’s matching named group.<br>
+               Example: <kbd>{$ID}</kbd> 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="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>
+       <li><kbd>(?&lt;ID&gt;[0-9]+)</kbd> detects a numeric ID.</li>
+       <li><kbd>(?&lt;ID&gt;[0-9a-zA-Z]+)</kbd> detects an alphanumeric ID.</li>
 </ul>]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.regex.error.invalid"><![CDATA[The regular expression failed to validate.]]></item>
                <item name="wcf.acp.bbcode.mediaProvider.title"><![CDATA[Media Providers]]></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="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.add"><![CDATA[Add Box]]></item>
                <item name="wcf.acp.box.boxController"><![CDATA[Controller]]></item>
                <item name="wcf.acp.box.linkPageObjectID.error.invalid"><![CDATA[ID is invalid.]]></item>
                <item name="wcf.acp.box.lastVersion"><![CDATA[There are <a href="{link controller='VersionTrackerList' objectType='com.woltlab.wcf.box' objectID=$box->boxID}{/link}">previous versions</a> of this box, 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.box.originIsNotSystem"><![CDATA[Custom boxes only]]></item>
+               <item name="wcf.acp.box.isDisabled"><![CDATA[Box is disabled]]></item>
+               <item name="wcf.acp.box.button.copyBox"><![CDATA[Copy Box]]></item>
+               <item name="wcf.acp.box.copy"><![CDATA[Copy Box]]></item>
+               <item name="wcf.acp.box.copy.description"><![CDATA[The values entered for this box will be used as a preset to create a new box. Only values editable in this form are included.<br><br>You’ll need to submit the form to save the new box. You can make changes to the new box by editing the values in that form, please bear in mind that new boxes are disabled by default.]]></item>
+               <item name="wcf.acp.box.boxController.com.woltlab.wcf.trophyCategories"><![CDATA[Trophy Categories]]></item>
        </category>
-       
        <category name="wcf.acp.cache">
                <item name="wcf.acp.cache.button.clear"><![CDATA[Clear Cache]]></item>
                <item name="wcf.acp.cache.clear.sure"><![CDATA[Do you really want to clear the cache?]]></item>
                <item name="wcf.acp.cache.type.style"><![CDATA[Styles]]></item>
                <item name="wcf.acp.cache.type.template"><![CDATA[Templates]]></item>
        </category>
-       
        <category name="wcf.acp.captcha">
                <item name="wcf.acp.captcha.question.add"><![CDATA[Add Captcha Question]]></item>
                <item name="wcf.acp.captcha.question.answers"><![CDATA[Answers]]></item>
                <item name="wcf.acp.captcha.question.list"><![CDATA[Captcha Questions]]></item>
                <item name="wcf.acp.captcha.question.question"><![CDATA[Question]]></item>
        </category>
-       
        <category name="wcf.acp.cronjob">
                <item name="wcf.acp.cronjob.list"><![CDATA[Cronjobs]]></item>
                <item name="wcf.acp.cronjob.add"><![CDATA[Add Cronjob]]></item>
-               <item name="wcf.acp.cronjob.subtitle"><![CDATA[]]></item>
+               <item name="wcf.acp.cronjob.subtitle"/>
                <item name="wcf.acp.cronjob.startDom"><![CDATA[Day of Month]]></item>
                <item name="wcf.acp.cronjob.startDom.description"><![CDATA[Day of the month (1 - 31), the cronjob should be executed.]]></item>
                <item name="wcf.acp.cronjob.startDomShort"><![CDATA[D]]></item>
                <item name="wcf.acp.cronjob.log.error.details"><![CDATA[Error Message]]></item>
                <item name="wcf.acp.cronjob.log.noEntries"><![CDATA[There are not any entries at the moment.]]></item>
        </category>
-       
        <category name="wcf.acp.dataImport">
                <item name="wcf.acp.dataImport"><![CDATA[Data Import]]></item>
                <item name="wcf.acp.dataImport.cli.configure.data.alreadySelected"><![CDATA[This data is already selected to be imported.]]></item>
                <item name="wcf.acp.dataImport.selectExporter.noExporters"><![CDATA[There are not any data importers installed at the moment.]]></item>
                <item name="wcf.acp.dataImport.started"><![CDATA[Import started.]]></item>
        </category>
-       
        <category name="wcf.acp.devtools">
                <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.name.error.notUnique"><![CDATA[The name is already used by another project.]]></item>
                <item name="wcf.acp.devtools.project.path"><![CDATA[Path]]></item>
                <item name="wcf.acp.devtools.project.path.error.missingCompatibility"><![CDATA[This package does not contain any data on API compatibility.]]></item>
-               <item name="wcf.acp.devtools.project.path.error.notInstalled"><![CDATA[The package must be installed already.]]></item>
+               <item name="wcf.acp.devtools.project.path.error.notInstalled"><![CDATA[The package has not been installed yet. <a href="#" {if $project->getPackageArchive()->getOpenRequirements()|empty}class="jsDevtoolsInstallPackage"{else}class="jsStaticDialog" data-dialog-id="openPackageRequirements"{/if}>Do you want to install the package?</a>]]></item>
                <item name="wcf.acp.devtools.project.path.error.notFound"><![CDATA[The path is invalid.]]></item>
                <item name="wcf.acp.devtools.project.path.error.notUnique"><![CDATA[The path is already used by another project.]]></item>
                <item name="wcf.acp.devtools.project.path.error.packageXml"><![CDATA[The path does not contain a valid <kbd>package.xml</kbd>.]]></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>
+               <item name="wcf.acp.devtools.project.installPackage.confirmMessage"><![CDATA[Do you really want to install the package <span class="confirmationObject">{@$packageIdentifier}</span>?]]></item>
+               <item name="wcf.acp.devtools.project.installPackage.error.openRequirements"><![CDATA[The project cannot be installed because the following packages are missing:]]></item>
+               <item name="wcf.acp.devtools.project.installPackage.openRequirement"><![CDATA[{$openPackage} (Version {$openRequirement[minversion]})]]></item>
+               <item name="wcf.acp.devtools.project.installPackage.error.openRequirements.title"><![CDATA[Missing Packages]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier"><![CDATA[Package Identifier]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.requiredPackage"><![CDATA[<kbd>{$packageIdentifier}</kbd>
+<dl class="plain inlineDataList small">
+       {if $minVersion}
+               <dt>Minimum version</dt>
+               <dd><kbd>{$minVersion}</kbd></dd>
+       {/if}
+       <dt>Package file included in package</dt>
+       <dd><span class="icon icon16 fa-{if $file}check{else}times{/if}"></span></dd>
+</dl>]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier.error.maximumLength"><![CDATA[The package identifier must not be longer than 191 characters.]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier.error.minimumLength"><![CDATA[The package identifier must be longer than three characters.]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier.error.format"><![CDATA[The entered package identifier is invalid.]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.minVersion"><![CDATA[Minimum Version]]></item>
+               <item name="wcf.acp.devtools.project.packageVersion.error.format"><![CDATA[The entered version is invalid.]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackages"><![CDATA[Required Packages]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.file"><![CDATA[Package File Included in Package]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.file.description"><![CDATA[The path to the package file has to be <kbd>requirements/{literal}{$packageIdentifier}{/literal}.tar</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier.error.duplicate"><![CDATA[The entered package is already a requirement.]]></item>
+               <item name="wcf.acp.devtools.project.packageVersion.error.maximumLength"><![CDATA[The version must not be longer than 255 characters.]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.error.selfRequirement"><![CDATA[A package cannot require itself.]]></item>
+               <item name="wcf.acp.devtools.project.add.mode"><![CDATA[Mode]]></item>
+               <item name="wcf.acp.devtools.project.add.mode.import"><![CDATA[Import existing package]]></item>
+               <item name="wcf.acp.devtools.project.add.mode.setup"><![CDATA[Setup new project]]></item>
+               <item name="wcf.acp.devtools.project.packageInformation"><![CDATA[Package Information]]></item>
+               <item name="wcf.acp.devtools.project.packageName"><![CDATA[Package Name]]></item>
+               <item name="wcf.acp.devtools.project.isApplication"><![CDATA[Package Contains App]]></item>
+               <item name="wcf.acp.devtools.project.packageVersion"><![CDATA[Package Version]]></item>
+               <item name="wcf.acp.devtools.project.packageDate"><![CDATA[Creation Date]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackages.description"><![CDATA[In order to install this package, the following packages have to be already installed or the versions delivered together with the package have to be installed first.]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackages"><![CDATA[Conflicting Packages]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackages.description"><![CDATA[This package cannot be installed if one of the following packages is already installed (in the specified <strong>or new</strong> version).]]></item>
+               <item name="wcf.acp.devtools.project.compatibility"><![CDATA[API Compatibility]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackage.excludedPackage"><![CDATA[<kbd>{$packageIdentifier}</kbd>
+{if $version}
+       <dl class="plain inlineDataList small">
+               <dt>Version</dt>
+               <dd><kbd>{$version}</kbd></dd>
+       </dl>
+{/if}]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackage.error.requirementExclusion"><![CDATA[If required packages are added as conflicting packages, both, the required version and the conflicting version, have to be specified and the conflicting version has to be newer than the required version. Affected packages: {implode from=$affectedPackages item=affectedPackage}{$affectedPackage}{/implode}.]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackage.version"><![CDATA[Conflicting Version]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackage.error.selfExclusion"><![CDATA[A package cannot be conflicting with itself.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.optionalPackage"><![CDATA[{$packageIdentifier}]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.packageIdentifier.description"><![CDATA[The path to the package file has to be <kbd>optionals/{literal}{$packageIdentifier}{/literal}.tar</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackages"><![CDATA[Optional Packages]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackages.description"><![CDATA[The following packages will be offered to be installed optionally after this package has been installed.]]></item>
+               <item name="wcf.acp.devtools.project.apiVersions"><![CDATA[Compatible API Versions]]></item>
+               <item name="wcf.acp.devtools.project.apiVersions.description"><![CDATA[The package is compatible with all of the selected API versions of WoltLab Suite Core.]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackages.shortTitle"><![CDATA[Requirements]]></item>
+               <item name="wcf.acp.devtools.project.excludedPackages.shortTitle"><![CDATA[Conflicts]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackages.shortTitle"><![CDATA[Optional]]></item>
+               <item name="wcf.acp.devtools.project.instructions"><![CDATA[Instructions]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type"><![CDATA[Instruction Type]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.install"><![CDATA[Installation]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.update"><![CDATA[Update]]></item>
+               <item name="wcf.acp.devtools.project.instructions.update.fromVersion"><![CDATA[Updated Version]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.install.title"><![CDATA[Instructions for Installation]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.update.title"><![CDATA[Instructions for Updating from Version {$fromVersion}]]></item>
+               <item name="wcf.acp.devtools.project.instructions.instructions.description"><![CDATA[The instructions will be executed in the given order. They can be sorted by dragging and dropping them.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.packageInstallationPlugin"><![CDATA[Package Component]]></item>
+               <item name="wcf.acp.devtools.project.instruction.value.description.defaultFilename"><![CDATA[If no file is specified, the following file will be used by default: <kbd>{$defaultFilename}</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.instruction"><![CDATA[<kbd>{$pip}</kbd>
+{if $value || $runStandalone || $application}
+       <dl class="plain inlineDataList small">
+               {if $value}
+                       <dt>Value</dt>
+                       <dd><kbd>{$value}</kbd></dd>
+               {/if}
+               {if $application}
+                       <dt>App</dt>
+                       <dd>{$application}</dd>
+               {/if}
+               {if $runStandalone}
+                       <dt>Run in separate step</dt>
+                       <dd><span class="icon icon16 fa-check"></span></dd>
+               {/if}
+       </dl>
+{/if}]]></item>
+               <item name="wcf.acp.devtools.project.instruction.runStandalone"><![CDATA[Execute in separate step]]></item>
+               <item name="wcf.acp.devtools.project.instruction.runStandalone.description"><![CDATA[For time-consuming components, it is recommended to install this component in a separate step.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.application"><![CDATA[App]]></item>
+               <item name="wcf.acp.devtools.project.authorInformation"><![CDATA[Developer Information]]></item>
+               <item name="wcf.acp.devtools.project.author"><![CDATA[Developer]]></item>
+               <item name="wcf.acp.devtools.project.authorUrl"><![CDATA[Developer’s Website]]></item>
+               <item name="wcf.acp.devtools.project.instructions.delete.confirmMessages"><![CDATA[Do you really want to delete the instructions?]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.install.error.duplicate"><![CDATA[There is already a set of installation instructions.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.error.exclusionOptional"><![CDATA[Optional packages cannot be excluded at the same time. Affected packages: {implode from=$affectedPackages item=affectedPackage}{$affectedPackage}{/implode}.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.error.requirementOptional"><![CDATA[Optional packages cannot be required at the same time. Affected packages: {implode from=$affectedPackages item=affectedPackage}{$affectedPackage}{/implode}.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.error.selfOptional"><![CDATA[A package cannot be an optional package for itself.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.value"><![CDATA[File(s)]]></item>
+               <item name="wcf.acp.devtools.project.instruction.value.description"><![CDATA[The entered file will be processed during the installation/update.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.description"><![CDATA[The instructions tell the installation and update routine what needs to be done to successfully install/update the package.]]></item>
+               <item name="wcf.acp.devtools.project.packageIdentifier.description"><![CDATA[The package identifier uniquely identifies the package. The identifier consists of at least three segments that are separated by dots. Each segment may only contain the following characters: <kbd>[A-z0-9-_]</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.isApplication.description"><![CDATA[(TODO) The last segment of the package identifier is used as the abbreviation of the application within the system. App abbreviations have to be unique within an installation.]]></item>
+               <item name="wcf.acp.devtools.project.packageDate.description"><![CDATA[The package creation date refers to when this version of the package was published. Format: <kbd>YYYY-MM-DD</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.packageUrl.description"><![CDATA[The package website provides detailed information on the package.]]></item>
+               <item name="wcf.acp.devtools.project.packageUrl"><![CDATA[Package Website]]></item>
+               <item name="wcf.acp.devtools.project.packageVersion.description"><![CDATA[The package version consists of three dot-separated numbers and an optional whitespace-separated suffix <kbd>Dev</kbd>, <kbd>Alpha</kbd>, <kbd>Beta</kbd>, <kbd>RC</kbd>, or <kbd>pl</kbd> that is followed by another number. Examples: <kbd>1.0.0</kbd>, <kbd>2.1.0 Beta 3</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.path.error.pathExists"><![CDATA[The entered path exists already.]]></item>
+               <item name="wcf.acp.devtools.project.path.error.parentDoesNotExist"><![CDATA[The parent folder does not exist.]]></item>
+               <item name="wcf.acp.devtools.project.path.error.cannotMakeDirectory"><![CDATA[The entered package directory cannot be created.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.error.noInstallationInstructions"><![CDATA[There are no installation instructions.]]></item>
+               <item name="wcf.acp.devtools.project.add.mode.edit"><![CDATA[Edit project]]></item>
+               <item name="wcf.acp.devtools.project.applicationDirectory"><![CDATA[Suggested App Directory]]></item>
+               <item name="wcf.acp.devtools.project.applicationDirectory.description"><![CDATA[During the installation of the app, the entered directory name is suggested for the app. The directory may only contain the following characters: <kbd>A-z0-9_-</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.applicationDirectory.error.format"><![CDATA[The entered app directory is invalid.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.update.error.updateForFutureVersion"><![CDATA[The updated version specified for updates always has to be an older version. The entered updated version <kbd>{$fromVersion}</kbd> is newer than the currently specified package version <kbd>{$version}</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.type.update.error.duplicate"><![CDATA[There can only be one set of installation instructions.]]></item>
+               <item name="wcf.acp.devtools.project.edit.warning"><![CDATA[After submitting the form, the existing <kbd>package.xml</kbd> file will be rewritten!]]></item>
+               <item name="wcf.acp.devtools.project.instructions.update.fromVersion.description"><![CDATA[The updated version can either be a concrete version like <kbd>1.0.3</kbd> or a whole range of versions expressed using an asterisk (example: <kbd>1.0.*</kbd>).]]></item>
+               <item name="wcf.acp.devtools.project.instruction.error.missingFile"><![CDATA[The file <kbd>{$file}</kbd> does not exist.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.error.missingDirectory"><![CDATA[The associated directory with the unzipped files, <kbd>{$directory}</kbd>, does not exist.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.error.noArchive"><![CDATA[The entered file is no archive ending with <kbd>.tar</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.error.missingDirectoryForUpdatedFiles"><![CDATA[Archives whose filename ends with <kbd>_update.tar</kbd> are considered to only contain files updated since the last version. For such archives, the name of associated directory with the unzipped files is the archive filename without the <kbd>_update.tar</kbd> suffix. This directory, <kbd>{$directory}</kbd>, does not exist.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.script.error.missingFile"><![CDATA[The entered script file could not be found at any of the following locations: {implode from=$checkedFileLocations item=checkedFileLocation}<kbd>{$checkedFileLocation}</kbd>{/implode}.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.script.error.noPhpFile"><![CDATA[The entered file is no PHP file ending with <kbd>.php</kbd>.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.error.missingInstructions"><![CDATA[No instructions were added.]]></item>
+               <item name="wcf.acp.devtools.project.instructions.edit"><![CDATA[Edit instructions]]></item>
+               <item name="wcf.acp.devtools.project.instruction.edit"><![CDATA[Edit instruction]]></item>
+               <item name="wcf.acp.devtools.project.instruction.language.error.missingFiles"><![CDATA[The directory <kbd>{$directory}<kdb> contains no XML files.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.error.noXmlFile"><![CDATA[The entered file is no XML file.]]></item>
+               <item name="wcf.acp.devtools.project.instruction.delete.confirmMessages"><![CDATA[Do you really want to delete the instruction?]]></item>
+               <item name="wcf.acp.devtools.project.add.info"><![CDATA[Conflicting packages, installation instructions, and update instructions can only be added when editing an existing project.]]></item>
+               <item name="wcf.acp.devtools.project.optionalPackage.error.missingFiles"><![CDATA[The following package files are missing: {implode from=$missingFiles item=missingFile}<kbd>{$missingFile}</kbd>{/implode}.]]></item>
+               <item name="wcf.acp.devtools.project.requiredPackage.error.missingFiles"><![CDATA[The following package files are missing: {implode from=$missingFiles item=missingFile}<kbd>{$missingFile}</kbd>{/implode}.]]></item>
        </category>
-       
        <category name="wcf.acp.email">
                <item name="wcf.acp.email.smtp.test"><![CDATA[SMTP Connection Test]]></item>
                <item name="wcf.acp.email.smtp.test.description"><![CDATA[Validates the connection data and user credentials, for their basic validity. No email is sent during this process!<br><br><strong>Notice:</strong> This is only a very basic test. Passing it does not guarantee emails to be successfully delivered!]]></item>
                <item name="wcf.acp.email.smtp.test.error.notTlsSupport"><![CDATA[The server does not support encryption.]]></item>
                <item name="wcf.acp.email.smtp.test.error.tlsFailed"><![CDATA[Unable to establish a secure connection.]]></item>
        </category>
-       
        <category name="wcf.acp.exceptionLog">
                <item name="wcf.acp.exceptionLog"><![CDATA[Logged errors]]></item>
                <item name="wcf.acp.exceptionLog.exception.message"><![CDATA[Error Message]]></item>
                <item name="wcf.acp.exceptionLog.exception.userAgent"><![CDATA[User Agent]]></item>
                <item name="wcf.acp.exceptionLog.exception.memory"><![CDATA[Memory]]></item>
        </category>
-       
        <category name="wcf.acp.group">
                <item name="wcf.acp.group.add"><![CDATA[Add User Group]]></item>
                <item name="wcf.acp.group.delete.sure"><![CDATA[Do you really want to delete the user group <span class="confirmationObject">{$group->groupName|language}</span>?]]></item>
                <item name="wcf.acp.group.option.category.admin.content.tag"><![CDATA[Tags]]></item>
                <item name="wcf.acp.group.option.admin.content.tag.canManageTag"><![CDATA[Can manage tags]]></item>
                <item name="wcf.acp.group.option.user.signature.maxLength"><![CDATA[Maximum Signature Length]]></item>
+               <item name="wcf.acp.group.option.user.signature.maxLength"><![CDATA[Can edit their signature]]></item>
                <item name="wcf.acp.group.option.admin.management.canImportData"><![CDATA[Can import data]]></item>
                <item name="wcf.acp.group.option.admin.management.canRebuildData"><![CDATA[Can rebuild data]]></item>
                <item name="wcf.acp.group.description"><![CDATA[Description]]></item>
                <item name="wcf.acp.group.option.admin.trophy.canAwardTrophy"><![CDATA[Can award trophies]]></item>
                <item name="wcf.acp.group.option.category.user.profile.trophy"><![CDATA[Trophies]]></item>
                <item name="wcf.acp.group.option.user.profile.trophy.canSeeTrophies"><![CDATA[Can see trophies]]></item>
-               <item name="wcf.acp.group.option.user.profile.trophy.maxUserSpecialTrophies"><![CDATA[Maximum number of special trophies]]></item> <!-- @TODO: find a better name? -->
+               <item name="wcf.acp.group.option.user.profile.trophy.maxUserSpecialTrophies"><![CDATA[Maximum number of special trophies]]></item>
+               <!-- @TODO: find a better name? -->
                <item name="wcf.acp.group.option.user.profile.trophy.maxUserSpecialTrophies.description"><![CDATA[Special trophies can be individually selected by the user and displayed in the message sidebar and the user profile.]]></item>
                <item name="wcf.acp.group.option.category.user.profile.coverPhoto"><![CDATA[Cover Photos]]></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>
+               <item name="wcf.acp.group.option.user.signature.canEditSignature"><![CDATA[Can edit own signature]]></item>
        </category>
-       
        <category name="wcf.acp.index">
                <item name="wcf.acp.index.credits"><![CDATA[About WoltLab Suite&trade;]]></item>
                <item name="wcf.acp.index.credits.contributor"><![CDATA[Contributions]]></item>
                <item name="wcf.acp.index.tinyBuild"><![CDATA[The accelerated guest view improves the page responsiveness and loading times for both visitors and search engines alike, please consider <a href="{link controller='Option' id=1 optionName="visitor_use_tiny_build"}#category_module.system{/link}">enabling it</a>.]]></item>
                <item name="wcf.acp.index.recaptchaWithoutKey"><![CDATA[Using reCAPTCHA without an individual website key is no longer supported by Google.<br><br>For further use you need to <a href="{$recaptchaKeyLink}">provide a key in your options</a>, please follow the instructions below the input field to obtain a key.]]></item>
        </category>
-       
        <category name="wcf.acp.label">
                <item name="wcf.acp.label.add"><![CDATA[Add Label]]></item>
                <item name="wcf.acp.label.cssClassName"><![CDATA[CSS Class Name]]></item>
                <item name="wcf.acp.label.filter"><![CDATA[Filter]]></item>
                <item name="wcf.acp.label.container.com.woltlab.wcf.article.category"><![CDATA[Articles]]></item>
        </category>
-       
        <category name="wcf.acp.language">
                <item name="wcf.acp.language.add"><![CDATA[Add Language]]></item>
                <item name="wcf.acp.language.add.languageCode.error.notUnique"><![CDATA[The language code is already in use by an installed language.]]></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.description"><![CDATA[The phrase identifier consists of at least three segments that are separated by dots. Each segment may only contain the following characters: <kbd>[A-z0-9-_]</kbd>.]]></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.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.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>
                <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.masterPassword"><![CDATA[Master Password]]></item>
                <item name="wcf.acp.masterPassword.confirm"><![CDATA[Confirm Master Password]]></item>
                <item name="wcf.acp.masterPassword.init"><![CDATA[Set Master Password]]></item>
                <item name="wcf.acp.masterPassword.init.description"><![CDATA[The master password is the last line of defense, protecting both critical settings and sensitive data. One should choose a rather strong password which is neither known to any 3rd party person nor re-used on other web pages.]]></item>
        </category>
-       
        <category name="wcf.acp.menu">
                <item name="wcf.acp.menu.link.management"><![CDATA[Management]]></item>
                <item name="wcf.acp.menu.link.maintenance"><![CDATA[Maintenance]]></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.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.notice.add"><![CDATA[Add Notice]]></item>
                <item name="wcf.acp.notice.cssClassName"><![CDATA[Appearance]]></item>
                <item name="wcf.acp.notice.isDismissible.description"><![CDATA[If a user dismisses a notice, it will not display for them again.]]></item>
                <item name="wcf.acp.notice.list"><![CDATA[Notices]]></item>
                <item name="wcf.acp.notice.notice"><![CDATA[Notice]]></item>
-               <item name="wcf.acp.notice.notice.description"><![CDATA[<code>{literal}{$username}{/literal}</code> will be replaced by the name and <code>{literal}{$email}{/literal}</code> by the mail address of the active user.]]></item>
+               <item name="wcf.acp.notice.notice.description"><![CDATA[<kbd>{literal}{$username}{/literal}</kbd> will be replaced by the name and <kbd>{literal}{$email}{/literal}</kbd> by the mail address of the active user.]]></item>
                <item name="wcf.acp.notice.noticeUseHtml"><![CDATA[Enable HTML code in notice]]></item>
                <item name="wcf.acp.notice.resetIsDismissed"><![CDATA[Dismissed notices will be displayed again.]]></item>
                <item name="wcf.acp.notice.resetIsDismissed.description"><![CDATA[The notice will be displayed again to users who dismissed the previous version. Guests who dismissed the notice will only view it in a new session.]]></item>
                <item name="wcf.acp.notice.showOrder.description"><![CDATA[Choose display order of notices.]]></item>
        </category>
-       
        <category name="wcf.acp.option">
                <item name="wcf.acp.option.blacklist_hostnames"><![CDATA[Block by Hostname]]></item>
                <item name="wcf.acp.option.blacklist_hostnames.description"><![CDATA[You can specify which hostnames will be blacklisted. Enter one hostname per line.]]></item>
                <item name="wcf.acp.option.session_enable_virtualization.description"><![CDATA[Users can login from multiple devices (desktop, tablet, smartphone, etc.) concurrently; all devices will share the same session. Disabling this will restrict users to only one device (session) at a time, causing all the other device sessions to terminate. It is not recommended to disable this option.]]></item>
                <item name="wcf.acp.option.timezone"><![CDATA[Timezone]]></item>
                <item name="wcf.acp.option.timezone.description"><![CDATA[The default timezone of your page.]]></item>
+               <item name="wcf.acp.option.user_ip_address_searchengine"><![CDATA[Search Engine for IP Addresses]]></item>
+               <item name="wcf.acp.option.user_ip_address_searchengine.description"><![CDATA[IP Addresses will be linked to this search engine; by default IP addresses are linked to www.google.com. <span class="inlineCode">%s</span> will be replaced by the IP address.]]></item>
                <item name="wcf.acp.option.user_online_timeout"><![CDATA[Users Online Timeout]]></item>
                <item name="wcf.acp.option.user_online_timeout.description"><![CDATA[Inactive users will not appear in ‘users online’ after the following seconds.]]></item>
                <item name="wcf.acp.option.offline"><![CDATA[Enable maintenance mode]]></item>
                <item name="wcf.acp.option.offline_message"><![CDATA[Maintenance Mode Notice]]></item>
                <item name="wcf.acp.option.offline_message.description"><![CDATA[The notice that is displayed to visitors while maintenance mode is enabled.]]></item>
                <item name="wcf.acp.option.offline_message_allow_html"><![CDATA[Enable HTML code in maintenance mode notice]]></item>
-               <item name="wcf.acp.option.offline_message_allow_html.description"><![CDATA[]]></item>
+               <item name="wcf.acp.option.offline_message_allow_html.description"/>
                <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>
 <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>
 </ul>]]></item>
-               
-               
-               
                <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>
@@ -1377,7 +1490,6 @@ Please follow the instructions described in <a href="https://www.woltlab.com/art
                <item name="wcf.acp.option.url_omit_index_php.test.status.failure"><![CDATA[Failed]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.status.success"><![CDATA[Pass]]></item>
                <item name="wcf.acp.option.url_omit_index_php.test.success"><![CDATA[The test was successful.]]></item>
-               
                <item name="wcf.acp.option.module_wcf_ad"><![CDATA[Ads]]></item>
                <item name="wcf.acp.option.module_wcf_ad.description"><![CDATA[Enables the <a href="{link controller='AdList'}{/link}">advertisement management</a>.]]></item>
                <item name="wcf.acp.option.captcha_type"><![CDATA[Captcha Type]]></item>
@@ -1502,9 +1614,15 @@ 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.image_external_source_whitelist"><![CDATA[Allowed images from external sites]]></item>
+               <item name="wcf.acp.option.image_external_source_whitelist.description"><![CDATA[The listed domains will be exempt from blocking. 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.message_enable_toc"><![CDATA[Enable the table of contents]]></item>
+               <item name="wcf.acp.option.search_enable_articles"><![CDATA[Articles are searchable]]></item>
+               <item name="wcf.acp.option.search_enable_pages"><![CDATA[Pages are searchable]]></item>
+               <item name="wcf.acp.option.message_sidebar_enable_articles"><![CDATA[Display author’s article count]]></item>
+               <item name="wcf.acp.option.log_missing_language_items"><![CDATA[Log Missing Language Items]]></item>
+               <item name="wcf.acp.option.log_missing_language_items.description"><![CDATA[The missing language items are logged in the log file <kbd>{'WCF_DIR'|constant}log/missingLanguageItems.txt</kbd>.]]></item>
        </category>
-       
        <category name="wcf.acp.customOption">
                <item name="wcf.acp.customOption.list"><![CDATA[Option Fields]]></item>
                <item name="wcf.acp.customOption.optionType"><![CDATA[Option Type]]></item>
@@ -1535,8 +1653,8 @@ When prompted for the notification URL for the instant payment notifications, pl
                <item name="wcf.acp.customOption.validationPattern"><![CDATA[Regular Expression]]></item>
                <item name="wcf.acp.customOption.validationPattern.description"><![CDATA[You can provide a regular expression to validate the user input.]]></item>
                <item name="wcf.acp.customOption.required"><![CDATA[This is a required field]]></item>
+               <item name="wcf.acp.customOption.isDisabled"><![CDATA[Disable option]]></item>
        </category>
-       
        <category name="wcf.acp.package">
                <item name="wcf.acp.package.apiVersions"><![CDATA[Supported WoltLab Suite&trade; API-versions]]></item>
                <item name="wcf.acp.package.apiVersions.missing"><![CDATA[This package does not provide any compatibility data.]]></item>
@@ -1682,7 +1800,6 @@ When prompted for the notification URL for the instant payment notifications, pl
 </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">
                <item name="wcf.acp.paidSubscription.list"><![CDATA[Paid Subscriptions]]></item>
                <item name="wcf.acp.paidSubscription.add"><![CDATA[Add Subscription]]></item>
@@ -1720,7 +1837,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.paidSubscription.error.noPaymentMethods"><![CDATA[Adding subscriptions requires at least one active payment provider for the “Supported Payment Methods” option.]]></item>
                <item name="wcf.acp.paidSubscription.delete.confirmMessage"><![CDATA[Do you really want to delete the paid subscription <span class="confirmationObject">{$subscription->title|language}</span>?]]></item>
        </category>
-       
        <category name="wcf.acp.pluginStore">
                <item name="wcf.acp.pluginStore.api.error"><![CDATA[Error {@$status}: The server was unable to process your request.]]></item>
                <item name="wcf.acp.pluginStore.api.noSSL"><![CDATA[Querying the Plugin-Store to fetch the purchased products requires a secure connection.<br><br>Your PHP version has been compiled without OpenSSL support, it is required to establish secure connections, please contact your hosting company or system-administrator to resolve this shortcoming.]]></item>
@@ -1746,16 +1862,14 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.pluginStore.purchasedItems.updateServer.requireUpdate"><![CDATA[The Update-Server for “{$wcfMajorRelease}” has not been queried yet, please search for updates to fetch the package list.]]></item>
                <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.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>
+               <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: <kbd>[A-z0-9-_]</kbd>.]]></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.cssClassName.error.invalid"><![CDATA[The following CSS classes are invalid: {implode from=$invalidClasses item=invalidClass}<kbd>{$invalidClass}</kbd>{/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>
@@ -1773,25 +1887,32 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.clipboardItem.listClassName.description"><![CDATA[The entered class must extend <kbd>wcf\data\DatabaseObjectList</kbd> 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.content.userContentProvider.data.title"><![CDATA[User Content Provider Data]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.niceValue"><![CDATA[Nice Value]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.niceValue.description"><![CDATA[The nice value is used to determine the order in which the remove content worker are execute the provider. Workers with lower nice value are shown first.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.hidden"><![CDATA[Hidden]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.hidden.description"><![CDATA[If "Yes" is selected, the content provider cannot be actively selected or deselected in the Content Remove dialog.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.requiredObjectType"><![CDATA[Required Object Types]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.requiredObjectType.description"><![CDATA[These object types are automatically executed when the User Content Remove Worker is executed and this object type is processed. Heads up: If a special order must be kept, nicevalue should be specified.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.content.userContentProvider.error.unknownObjectType"><![CDATA[The object type <kbd>{$objectType}</kbd> is unknown.]]></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.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>
                <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.description"><![CDATA[Name of the database table containing the search index. The database table will be automatically created by the system. For all applications, <kbd>app1_</kbd> will be replaced with <kbd>appN_</kbd> in which <kbd>app</kbd> is the abbreviation of the relevant application and <kbd>N</kbd> is the value of <kbd>WCF_N</kbd>.]]></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.searchableObjectType.searchIndex.error.unknownApp"><![CDATA[No app with the abbreviation <kbd>{@$app}</kbd> 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>
@@ -1801,8 +1922,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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 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.statDailyHandler.categoryName.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>
+               <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: <kbd>[A-z0-9-_]</kbd>.]]></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>
@@ -1814,15 +1934,14 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.tableName.description"><![CDATA[Name of the database table containg the original data whose different version will be tracked. For all applications, <kbd>app1_</kbd> will be replaced with <kbd>appN_</kbd> in which <kbd>app</kbd> is the abbreviation of the relevant application and <kbd>N</kbd> is the value of <kbd>WCF_N</kbd>.]]></item>
+               <item name="wcf.acp.pip.objectType.com.woltlab.wcf.versionTracker.objectType.tableName.error.nonExistent"><![CDATA[The database table <kbd>{$tableName}</kbd> 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.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>
                <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>
@@ -1855,6 +1974,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.content.userContentProvider.description"><![CDATA[This object type definition is used to register user content with a provider to provide specific user content from 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>
@@ -1883,21 +2003,20 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.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>
+               <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: <kbd>[A-z0-9-_]</kbd>.]]></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.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>
+               <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: <kbd>{$project->getPackage()->package}.type</kbd>]]></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.description"><![CDATA[The name of the package installation plugin is used as the value of the <kbd>type</kbd> attribute of an <kbd>instruction</kbd> element in a <kbd>package.xml</kbd> 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>
@@ -1921,7 +2040,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.environment.description"><![CDATA[The environment determines whether the template listener is executed in the frontend (<kbd>user</kbd>) or the ACP (<kbd>admin</kbd>).]]></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>
@@ -1934,9 +2053,8 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.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: <kbd>{$project->getPackage()->package}.searchedObject</kbd>]]></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.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>
                <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>
@@ -1946,13 +2064,11 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.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 <kbd>{literal}{$name}{/literal}</kbd> where <kbd>name</kbd> 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.mediaProvider.title.description"><![CDATA[TODO]]></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.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>
                <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>
@@ -1967,6 +2083,8 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.parentMenuItem.error.childAsParent"><![CDATA[You cannot select a child menu item of the menu item as its parent.]]></item>
+               <item name="wcf.acp.pip.abstractMenu.parentMenuItem.error.selfParent"><![CDATA[You cannot select the menu item itself as its own parent.]]></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>
@@ -1978,15 +2096,15 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.description"><![CDATA[The menu item identifier must have the format <kbd>{literal}{app}.acp.menu.link.{additionalIdentifiers}{/literal}</kbd> where <kbd>{literal}{app}{/literal}</kbd> and <kbd>{literal}{additionalIdentifiers}{/literal}</kbd> have to be replaced with the appropriate values. <kbd>{literal}{additionalIdentifiers}{/literal}</kbd> may only contain letters, numbers, and 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.acpMenu.menuItemController.error.noAcpController"><![CDATA[The entered controller is no ACP controller. An ACP controller begins with <kbd>{literal}{app}{/literal}\acp\</kbd> where <kbd>{literal}{app}{/literal}</kbd> 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.description"><![CDATA[The menu item identifier must have the format <kbd>{literal}{app}.user.menu.{additionalIdentifiers}{/literal}</kbd> where <kbd>{literal}{app}{/literal}</kbd> and <kbd>{literal}{additionalIdentifiers}{/literal}</kbd> have to be replaced with the appropriate values. <kbd>{literal}{additionalIdentifiers}{/literal}</kbd> may only contain letters, numbers, and 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.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: <kbd>com.woltlab.wcf.example.doStuff</kbd> is the identifier for the cronjob <kbd>wcf\system\cronjob\DoStuffCronjob</kbd> from the <kbd>com.woltlab.wcf.example</kbd> 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>
@@ -1995,17 +2113,15 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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[TODO]]></item>
-               <item name="wcf.acp.pip.cronjob.startDow.error.format"><![CDATA[TODO]]></item>
-               <item name="wcf.acp.pip.cronjob.startHour.error.format"><![CDATA[TODO]]></item>
-               <item name="wcf.acp.pip.cronjob.startMinute.error.format"><![CDATA[TODO]]></item>
-               <item name="wcf.acp.pip.cronjob.startMonth.error.format"><![CDATA[TODO]]></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.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>
+               <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: <kbd>com.foo.bar.menu</kbd>]]></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.title.description"><![CDATA[TODO]]></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>
@@ -2018,8 +2134,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.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>
+               <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: <kbd>com.foo.bar.menu</kbd>]]></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>
@@ -2035,8 +2150,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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[TODO]]></item>
-               <item name="wcf.acp.pip.page.identifier.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>
+               <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 <kbd>Form</kbd> and <kbd>Page</kbd>. Example: <kbd>com.foo.bar.Baz</kbd>]]></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>
@@ -2056,7 +2170,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.cssClassName.description"><![CDATA[The entered comma-separated CSS classes are assigned to the <kbd>body</kbd> 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>
@@ -2076,7 +2190,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.environment.description"><![CDATA[The environment determines whether the event listener is executed in the frontend (<kbd>user</kbd>) or the ACP (<kbd>admin</kbd>).]]></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>
@@ -2098,8 +2212,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.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>
+               <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: <kbd>com.foo.bar.Box</kbd>]]></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>
@@ -2133,9 +2246,9 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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[TODO: format]]></item>
+               <item name="wcf.acp.pip.abstractOption.options.selectOptions.description"><![CDATA[Each option has to be written in a new line using the format <kbd>value:description</kbd> where <kbd>description</kbd> 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[TODO: format]]></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 <kbd>key:otherOptions</kbd> where <kbd>key:</kbd> is optional. If a key is present, the setting is only relevant if this option has the specified key as value. <kbd>otherOptions</kbd> 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>
@@ -2153,12 +2266,12 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.integer.suffix.description"><![CDATA[When setting the option value, the entered suffix (using the language item <kbd>wcf.acp.option.suffix.{literal}{$suffix}{/literal}</kbd>) 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.allNone"><![CDATA[The identifier may neither be <kbd>all</kbd> nor <kbd>none</kbd>.]]></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>
@@ -2180,7 +2293,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.description"><![CDATA[The entered path has to be relative to <kbd>{'WCF_DIR'|constant}icon/</kbd>.]]></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>
@@ -2188,14 +2301,14 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.aliases.error.notUnique"><![CDATA[The following aliases are already used by another smiley: {implode from=$notUniqueCodes item=notUniqueCode}<kbd>{$notUniqueCode}</kbd>{/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.showOrder.description"><![CDATA[The entered value determines in which order the smilies 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.description"><![CDATA[The entered path has to be relative to <kbd>{'WCF_DIR'|constant}</kbd>.]]></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.smiley.smileyPath2x.description"><![CDATA[The entered path has to be relative to <kbd>{'WCF_DIR'|constant}</kbd>.]]></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>
@@ -2225,26 +2338,29 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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.messageObjectType.description"><![CDATA[The message object type is passed to the <kbd>wcf\system\html\input\HtmlInputProcessor</kbd> 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.notification.objectType.supportsReactions.description"><![CDATA[Specifies whether the notification has support for the reaction system. If "No" is selected here, WoltLab Suite Core 3.2 (or higher) will not send notifications about reactions.]]></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.supportsReactions.description"><![CDATA[Specifies whether the recent activity event has support for the reaction system. If "No" is selected here, WoltLab Suite Core 3.2 (or higher) will not create recent activity events about reactions.]]></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.error.noIntegerColumn"><![CDATA[The entered column name of the <kbd>{$tableName}</kbd> database table is no <kbd>INT</kbd> column.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName.error.nonExistent"><![CDATA[The entered column does not exist in the <kbd>{$tableName}</kbd> database table.]]></item>
+               <item name="wcf.acp.pip.objectType.integerCondition.propertyName.description"><![CDATA[Name of the property and column of <kbd>{$tableName}</kbd> 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>
+               <item name="wcf.acp.pip.templateListener.niceValue"><![CDATA[Nice Value]]></item>
+               <item name="wcf.acp.pip.templateListener.niceValue.description"><![CDATA[The nice value is used to determine the order in which template listeners for the same event are executed. Template listeners with lower nice value are executed first.]]></item>
+               <item name="wcf.acp.pip.templateListener.options.description"><![CDATA[At least one of the entered options has to be enabled for the template listener’ code to be executed. The options are checked in the template by wrapping the template code in an if statement checking the options. Options of non-required packages will be reported as non-existing.]]></item>
+               <item name="wcf.acp.pip.templateListener.permissions.description"><![CDATA[The active user must be granted at least one of the entered permissions for the template listener’ code to be executed. The permissions are checked in the template by wrapping the template code in an if statement checking the permissions. Permissions of non-required packages will be reported as non-existing.]]></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>
@@ -2255,7 +2371,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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>
@@ -2286,7 +2401,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.rebuildData.com.woltlab.wcf.sitemap"><![CDATA[Rebuild Sitemap]]></item>
                <item name="wcf.acp.rebuildData.com.woltlab.wcf.sitemap.description"><![CDATA[Rebuilds the sitemap.]]></item>
        </category>
-       
        <category name="wcf.acp.rescueMode">
                <item name="wcf.acp.rescueMode"><![CDATA[Rescue Mode]]></item>
                <item name="wcf.acp.rescueMode.application"><![CDATA[Installed Apps]]></item>
@@ -2296,7 +2410,12 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.rescueMode.description"><![CDATA[The configured domains and/or paths do not match the address used to access this page. This can happen when moving to a new domain or changing the directory structure. Please use the form below to provide the new values.]]></item>
                <item name="wcf.acp.rescueMode.username.notAuthorized"><![CDATA[This user is not authorized to manage installed apps.]]></item>
        </category>
-       
+       <category name="wcf.acp.rewrite">
+               <item name="wcf.acp.rewrite"><![CDATA[Rewrite Rules (Apache)]]></item>
+               <item name="wcf.acp.rewrite.generate"><![CDATA[Generate Rewrite-Rules]]></item>
+               <item name="wcf.acp.rewrite.description"><![CDATA[Generates the rewrite rules for necessary .htaccess-files. Please keep in mind, that you might have to provide different rules for special webserver configurations.]]></item>
+               <item name="wcf.acp.rewrite.error.notApache"><![CDATA[Your webserver could not be identified as Apache. This function supports rewrite rules for Apache only.]]></item>
+       </category>
        <category name="wcf.acp.search">
                <item name="wcf.acp.search.noResults"><![CDATA[No results]]></item>
                <item name="wcf.acp.search.provider.com.woltlab.wcf.menuItem"><![CDATA[ACP Menu]]></item>
@@ -2310,7 +2429,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <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>
-       
        <category name="wcf.acp.sitemap">
                <item name="wcf.acp.sitemap"><![CDATA[Sitemap]]></item>
                <item name="wcf.acp.sitemap.priority"><![CDATA[Priority]]></item>
@@ -2335,7 +2453,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.sitemap.objectType.com.woltlab.wcf.sitemap.object.simplePage"><![CDATA[Simple pages]]></item>
                <item name="wcf.acp.sitemap.objectType.com.woltlab.wcf.sitemap.object.multilingualPage"><![CDATA[Multilingual pages]]></item>
        </category>
-       
        <category name="wcf.acp.stat">
                <item name="wcf.acp.stat"><![CDATA[Statistics]]></item>
                <item name="wcf.acp.stat.settings"><![CDATA[Settings]]></item>
@@ -2363,7 +2480,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.stat.category.com.woltlab.wcf.user"><![CDATA[User Data]]></item>
                <item name="wcf.acp.stat.noData"><![CDATA[There is no data available for the set period.]]></item>
        </category>
-       
        <category name="wcf.acp.updateServer">
                <item name="wcf.acp.updateServer.add"><![CDATA[Add Server]]></item>
                <item name="wcf.acp.updateServer.delete.sure"><![CDATA[Do you really want to delete the server <span class="confirmationObject">{$updateServer->serverURL}</span>?]]></item>
@@ -2381,7 +2497,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.updateServer.status"><![CDATA[Status]]></item>
                <item name="wcf.acp.updateServer.lastUpdateTime"><![CDATA[Last Access]]></item>
        </category>
-       
        <category name="wcf.acp.sessionLog">
                <item name="wcf.acp.sessionLog.access.list"><![CDATA[Logged actions of session from “{$sessionLog->username}”]]></item>
                <item name="wcf.acp.sessionLog.actions"><![CDATA[Actions]]></item>
@@ -2393,7 +2508,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.sessionLog.requestURI"><![CDATA[URI]]></item>
                <item name="wcf.acp.sessionLog.time"><![CDATA[Time]]></item>
        </category>
-       
        <category name="wcf.acp.smiley">
                <item name="wcf.acp.smiley.list"><![CDATA[Smilies]]></item>
                <item name="wcf.acp.smiley.delete.sure"><![CDATA[Do you really want to delete the smiley <span class="confirmationObject">{$smiley->smileyTitle|language}</span>?]]></item>
@@ -2421,7 +2535,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.smiley.fileUpload.error.noImage"><![CDATA[The uploaded file is not an image.]]></item>
                <item name="wcf.acp.smiley.fileUpload.error.uploadFailed"><![CDATA[An unknown error occurred during the upload.]]></item>
        </category>
-       
        <category name="wcf.acp.style">
                <item name="wcf.acp.style.add"><![CDATA[Add Style]]></item>
                <item name="wcf.acp.style.advanced"><![CDATA[Advanced Settings]]></item>
@@ -2551,7 +2664,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.style.favicon.error.dimensions"><![CDATA[The image must be exactly 256px × 256px large.]]></item>
                <item name="wcf.acp.style.favicon.error.invalidExtension"><![CDATA[The file extension is invalid.]]></item>
        </category>
-       
        <category name="wcf.acp.tag">
                <item name="wcf.acp.tag.add"><![CDATA[Add Tag]]></item>
                <item name="wcf.acp.tag.edit"><![CDATA[Edit Tag]]></item>
@@ -2569,7 +2681,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.tag.setAsSynonyms"><![CDATA[Set as Synonyms]]></item>
                <item name="wcf.acp.tag.setAsSynonyms.description"><![CDATA[Select one of the tags. The other tags will be set as synonyms of the selected tag.]]></item>
        </category>
-       
        <category name="wcf.acp.template">
                <item name="wcf.acp.template.list"><![CDATA[Templates]]></item>
                <item name="wcf.acp.template.group"><![CDATA[Template Group]]></item>
@@ -2600,7 +2711,6 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.template.name.error.invalid"><![CDATA[The specified name is invalid.]]></item>
                <item name="wcf.acp.template.delete.sure"><![CDATA[Do you really want to delete the template <span class="confirmationObject">{$template->templateName}</span>?]]></item>
        </category>
-       
        <category name="wcf.acp.user">
                <item name="wcf.acp.user.add"><![CDATA[Add User]]></item>
                <item name="wcf.acp.user.assignToGroup"><![CDATA[Add to User Group]]></item>
@@ -2787,6 +2897,8 @@ the lost password form <a href="{link controller='LostPassword' isEmail=true}{/l
                <item name="wcf.acp.user.authentication.failure.environment.user"><![CDATA[User]]></item>
                <item name="wcf.acp.user.authentication.failure.environment.admin"><![CDATA[Administration]]></item>
                <item name="wcf.acp.user.authentication.failure.time"><![CDATA[Date]]></item>
+               <item name="wcf.acp.user.authentication.failure.password"><![CDATA[Invalid Password]]></item>
+               <item name="wcf.acp.user.authentication.failure.username"><![CDATA[Unknown Username]]></item>
                <item name="wcf.acp.user.activation.mail.subject"><![CDATA[Your account on the website: {@PAGE_TITLE|language} has been approved]]></item>
                <item name="wcf.acp.user.activation.mail.html.headline"><![CDATA[Dear {$mailbox->getUser()->username},]]></item>
                <item name="wcf.acp.user.activation.mail.html.text"><![CDATA[
@@ -2816,13 +2928,12 @@ full extend.]]></item>
                <item name="wcf.acp.user.action.sendNewPassword"><![CDATA[Send New Password]]></item>
                <item name="wcf.acp.user.action.sendNewPassword.confirmMessage"><![CDATA[Do you really want to send a new password to this user?]]></item>
                <item name="wcf.acp.user.exportGdpr"><![CDATA[Export Personal Data (GDPR)]]></item>
+               <item name="wcf.acp.user.coverPhoto.description"><![CDATA[You can upload a cover photo on their user profile page.]]></item>
        </category>
-       
        <category name="wcf.acp.worker">
                <item name="wcf.acp.worker.abort.confirmMessage"><![CDATA[Do you really want to terminate the execution?]]></item>
                <item name="wcf.acp.worker.success"><![CDATA[Task completed]]></item>
        </category>
-       
        <category name="wcf.ajax">
                <item name="wcf.ajax.error.illegalLink"><![CDATA[The server was unable to process your request because the target is unknown or no longer available.]]></item>
                <item name="wcf.ajax.error.invalidParameter"><![CDATA[The parameter “{$fieldName}” is missing or invalid.]]></item>
@@ -2831,7 +2942,6 @@ full extend.]]></item>
                <item name="wcf.ajax.error.permissionDenied"><![CDATA[You are not authorized to execute this action.]]></item>
                <item name="wcf.ajax.error.sessionExpired"><![CDATA[Your session has expired, please reload this page.]]></item>
        </category>
-       
        <category name="wcf.article">
                <item name="wcf.article.nextArticle"><![CDATA[Next Article]]></item>
                <item name="wcf.article.previousArticle"><![CDATA[Previous Article]]></item>
@@ -2855,8 +2965,13 @@ full extend.]]></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>
+               <item name="wcf.article.button.sort"><![CDATA[Sort]]></item>
+               <item name="wcf.article.search"><![CDATA[Search Articles]]></item>
+               <item name="wcf.article.search.error.noResults"><![CDATA[The search returned no results.]]></item>
+               <item name="wcf.article.search.error.tooShort"><![CDATA[The entered keyword is too short.]]></item>
+               <item name="wcf.article.search.name"><![CDATA[Search Titles]]></item>
+               <item name="wcf.article.search.results"><![CDATA[Search Results]]></item>
        </category>
-       
        <category name="wcf.attachment">
                <item name="wcf.attachment.file.info"><![CDATA[({@$attachment->filesize|filesize}, downloaded <b>{#$attachment->downloads}</b> times{if $attachment->downloads > 0}, last: {@$attachment->lastDownloadTime|time}{/if})]]></item>
                <item name="wcf.attachment.image.info"><![CDATA[{@$attachment->filesize|filesize}, {#$attachment->width}×{#$attachment->height}, viewed {#$attachment->downloads} times]]></item>
@@ -2867,7 +2982,6 @@ full extend.]]></item>
                <item name="wcf.attachment.upload.error.invalidExtension"><![CDATA[The file extension is invalid.]]></item>
                <item name="wcf.attachment.upload.error.tooLarge"><![CDATA[The file is too big.]]></item>
                <item name="wcf.attachment.upload.error.reachedLimit"><![CDATA[You have reached the maximum number of attachments allowed.]]></item>
-               
                <item name="wcf.attachment.upload.error.reachedRemainingLimit"><![CDATA[You have selected too many attachments, remaining: #remaining#.]]></item>
                <item name="wcf.attachment.upload.error.uploadFailed"><![CDATA[An unknown error occurred during the upload.]]></item>
                <item name="wcf.attachment.upload.error.uploadPhpLimit"><![CDATA[The file exceeds the PHP limit “upload_max_filesize” and/or “post_max_size”.]]></item>
@@ -2887,7 +3001,6 @@ Allowed extensions: {', '|implode:$attachmentHandler->getFormattedAllowedExtensi
                <item name="wcf.attachment.dragAndDrop.dropHere"><![CDATA[Drag and Drop here to upload]]></item>
                <item name="wcf.attachment.dragAndDrop.dropNow"><![CDATA[Drop now to upload]]></item>
        </category>
-       
        <category name="wcf.bbcode">
                <item name="wcf.bbcode.button.collapse"><![CDATA[Display Less]]></item>
                <item name="wcf.bbcode.button.showAll"><![CDATA[Display More]]></item>
@@ -2922,27 +3035,22 @@ Allowed extensions: {', '|implode:$attachmentHandler->getFormattedAllowedExtensi
                <item name="wcf.bbcode.spoiler.text"><![CDATA[(Hidden Content)]]></item>
                <item name="wcf.bbcode.spoiler.simplified"><![CDATA[(Hidden Content)]]></item>
        </category>
-       
        <category name="wcf.captcha">
                <item name="wcf.captcha.useNoCaptcha"><![CDATA[(No Captcha)]]></item>
                <item name="wcf.captcha.com.woltlab.wcf.recaptcha"><![CDATA[reCAPTCHA]]></item>
                <item name="wcf.captcha.com.woltlab.wcf.captchaQuestion"><![CDATA[Question]]></item>
        </category>
-       
        <category name="wcf.captcha.question">
                <item name="wcf.captcha.question.answer.error.false"><![CDATA[You have entered an incorrect answer.]]></item>
                <item name="wcf.captcha.question.captcha"><![CDATA[Question]]></item>
                <item name="wcf.captcha.question.captcha.description"><![CDATA[Please answer the question respectively to solve the problem below.]]></item>
        </category>
-       
        <category name="wcf.captcha.recaptchaV2">
                <item name="wcf.captcha.recaptchaV2.error.recaptchaString.false"><![CDATA[Please confirm that you are not a robot.]]></item>
        </category>
-       
        <category name="wcf.captcha.recaptchaInvisible">
                <item name="wcf.captcha.recaptchaInvisible.error.recaptchaString.false"><![CDATA[The check failed, please re-submit the form.]]></item>
        </category>
-       
        <category name="wcf.category">
                <item name="wcf.category.add"><![CDATA[Add Category]]></item>
                <item name="wcf.category.button.list"><![CDATA[Categories]]></item>
@@ -2958,7 +3066,6 @@ Allowed extensions: {', '|implode:$attachmentHandler->getFormattedAllowedExtensi
                <item name="wcf.category.title"><![CDATA[Title]]></item>
                <item name="wcf.category.button.choose"><![CDATA[Choose Category]]></item>
        </category>
-       
        <category name="wcf.cli">
                <item name="wcf.cli.help.noLongHelp"><![CDATA[There is no long help for the parameter "{$topic}".]]></item>
                <item name="wcf.cli.help.language"><![CDATA[Forces the language with the given language code.]]></item>
@@ -2980,12 +3087,10 @@ Errors are:
                <item name="wcf.cli.error.language.notFound"><![CDATA[The language with the language code "{$languageCode}" could not be found.]]></item>
                <item name="wcf.cli.error.command.notFound"><![CDATA[The command "{$command}" could not be found. Type in "commands" to list available commands.]]></item>
        </category>
-       
        <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>
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.publish"><![CDATA[Publish ({#$count})]]></item>
@@ -2994,16 +3099,13 @@ Errors are:
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.trash"><![CDATA[Move to Trash ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.trash.confirmMessage"><![CDATA[Do you really want to move {#$count} article{if $count != 1}s{/if} to the trash bin?]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.article.unpublish"><![CDATA[Withdraw Publication ({#$count})]]></item>
-               
                <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>
                <item name="wcf.clipboard.item.com.woltlab.wcf.tag.setAsSynonyms"><![CDATA[Set as Synonyms ({#$count})]]></item>
-               
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.assignToGroup"><![CDATA[Add to User Group]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.ban"><![CDATA[Ban ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.delete"><![CDATA[Delete ({#$count})]]></item>
@@ -3011,17 +3113,16 @@ Errors are:
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.enable"><![CDATA[Approve]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.exportMailAddress"><![CDATA[Export Email Addresses]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.merge"><![CDATA[Merge]]></item>
+               <item name="wcf.clipboard.item.com.woltlab.wcf.user.resendActivationMail"><![CDATA[Send New Activation Code ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.revertContentChanges"><![CDATA[Revert Changes To Contents]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.sendMail"><![CDATA[Send Email]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.sendNewPassword"><![CDATA[Send New Password ({#$count})]]></item>
                <item name="wcf.clipboard.item.com.woltlab.wcf.user.sendNewPassword.confirmMessage"><![CDATA[Do you really want to send a new password to {#$count} user{if $count != 1}s{/if}?]]></item>
-               
                <item name="wcf.clipboard.label.com.woltlab.wcf.article.marked"><![CDATA[{if $count == 1}One Article{else}{#$count} Articles{/if}]]></item>
                <item name="wcf.clipboard.label.com.woltlab.wcf.media.marked"><![CDATA[{if $count == 1}One File{else}{#$count} Files{/if}]]></item>
                <item name="wcf.clipboard.label.com.woltlab.wcf.tag.marked"><![CDATA[{if $count == 1}One Tag{else}{#$count} Tags{/if}]]></item>
                <item name="wcf.clipboard.label.com.woltlab.wcf.user.marked"><![CDATA[{if $count == 1}One User{else}{#$count} Users{/if}]]></item>
        </category>
-       
        <category name="wcf.comment">
                <item name="wcf.comment.add"><![CDATA[Write a comment …]]></item>
                <item name="wcf.comment.approve"><![CDATA[Approve]]></item>
@@ -3038,7 +3139,6 @@ Errors are:
                <item name="wcf.comment.sortField.cumulativeLikes"><![CDATA[Likes]]></item>
                <item name="wcf.comment.sortField.time"><![CDATA[Date]]></item>
        </category>
-       
        <category name="wcf.condition">
                <item name="wcf.condition.greaterThan"><![CDATA[greater than]]></item>
                <item name="wcf.condition.greaterThan.error.lessThan"><![CDATA[The “less than” value and the “greater than” value are conflicting.]]></item>
@@ -3051,9 +3151,8 @@ Errors are:
                <item name="wcf.condition.timestamp.error.invalidEnd"><![CDATA[The end date is invalid.]]></item>
                <item name="wcf.condition.timestamp.error.invalidStart"><![CDATA[The start date is invalid.]]></item>
        </category>
-       
        <category name="wcf.contact">
-               <item name="wcf.contact.data"><![CDATA[Your Data]]></item>
+               <item name="wcf.contact.data"><![CDATA[Your Inquiry]]></item>
                <item name="wcf.contact.mail.subject"><![CDATA[New message via the contact form]]></item>
                <item name="wcf.contact.mail.plaintext"><![CDATA[Hello,
 
@@ -3080,11 +3179,10 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.contact.recipient.name1"><![CDATA[Administrator]]></item>
                <item name="wcf.contact.recipientID"><![CDATA[Recipient]]></item>
                <item name="wcf.contact.sender"><![CDATA[Sender]]></item>
-               <item name="wcf.contact.sender.information"><![CDATA[Your Inquiry]]></item>
+               <item name="wcf.contact.sender.information"><![CDATA[Your Data]]></item>
                <item name="wcf.contact.success"><![CDATA[Message has been sent.]]></item>
                <item name="wcf.contact.confirmPrivacyPolicy"><![CDATA[I have read the <a href="{page}com.woltlab.wcf.PrivacyPolicy{/page}">privacy policy</a> and expressly accept it. <span class="customOptionRequired">*</span>]]></item>
        </category>
-       
        <category name="wcf.acp.contact">
                <item name="wcf.acp.contact.options"><![CDATA[Input Fields]]></item>
                <item name="wcf.acp.contact.option.add"><![CDATA[Add Input Field]]></item>
@@ -3097,13 +3195,21 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.acp.contact.recipient.name"><![CDATA[Display Name]]></item>
                <item name="wcf.acp.contact.settings"><![CDATA[Edit Contact Form]]></item>
        </category>
-       
+       <category name="wcf.acp.content">
+               <item name="wcf.acp.content.removeContent"><![CDATA[Delete User Content]]></item>
+               <item name="wcf.acp.content.provider.removeContentSectionTitle"><![CDATA[Content]]></item>
+               <item name="wcf.acp.content.provider.removeContentInfo"><![CDATA[Please select which content of the user “<a href="{link controller='UserEdit' id=$user->userID}{/link}">{$user->username}</a>” should be deleted.]]></item>
+               <item name="wcf.acp.content.provider.removeContentWarning"><![CDATA[<strong>Heads up</strong>: The content will be deleted irrevocably and without any further confirmation prompt!]]></item>
+               <item name="wcf.acp.content.provider.com.woltlab.wcf.comment"><![CDATA[Comments]]></item>
+               <item name="wcf.acp.content.provider.com.woltlab.wcf.commentResponse"><![CDATA[Comment Responses]]></item>
+               <item name="wcf.acp.content.provider.com.woltlab.wcf.article"><![CDATA[Articles]]></item>
+               <item name="wcf.acp.content.provider.com.woltlab.wcf.reaction"><![CDATA[Reactions]]></item>
+       </category>
        <category name="wcf.date">
                <item name="wcf.date.dateFormat"><![CDATA[M jS Y]]></item>
-               <item name="wcf.date.timeFormat">g:i&#xa0;a</item>
+               <item name="wcf.date.timeFormat"><![CDATA[g:i a]]></item>
                <item name="wcf.date.dateTimeFormat"><![CDATA[%date%, %time%]]></item>
                <item name="wcf.date.shortDateTimeFormat"><![CDATA[%date%]]></item>
-               
                <item name="wcf.date.interval.days.past"><![CDATA[{if $days > 1}{#$days} days{else}A day{/if} ago]]></item>
                <item name="wcf.date.interval.full.past"><![CDATA[{if $years}{if $years > 1}{#$years} years{else}A year{/if}{/if}{if $months}{if $firstElement != 'months'}{if $lastElement == 'months'} and {else}, {/if}{/if}{if $months > 1}{#$months} months{else}{if $firstElement == 'months'}A{else}a{/if} month{/if}{/if}{if $weeks}{if $firstElement != 'weeks'}{if $lastElement == 'weeks'} and {else}, {/if}{/if}{if $weeks > 1}{#$weeks} weeks{else}{if $firstElement == 'weeks'}A{else}a{/if} week{/if}{/if}{if $days}{if $firstElement != 'days'}{if $lastElement == 'days'} and {else}, {/if}{/if}{if $days > 1}{#$days} days{else}{if $firstElement == 'days'}A{else}a{/if} day{/if}{/if}{if $hours}{if $firstElement != 'hours'}{if $lastElement == 'hours'} and {else}, {/if}{/if}{if $hours > 1}{#$hours} hours{else}{if $firstElement == 'hours'}An{else}an{/if} hour{/if}{/if}{if $minutes}{if $firstElement != 'minutes' && $lastElement == 'minutes'} and {/if}{if $minutes > 1}{#$minutes} minutes{else}{if $firstElement == 'minutes'}A{else}a{/if} minute{/if}{/if} ago]]></item>
                <item name="wcf.date.interval.hours.past"><![CDATA[{if $hours > 1}{#$hours} hours{else}An hour{/if} ago]]></item>
@@ -3111,7 +3217,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.interval.months.past"><![CDATA[{if $months > 1}{#$months} months{else}A Month{/if} ago]]></item>
                <item name="wcf.date.interval.weeks.past"><![CDATA[{if $weeks > 1}{#$weeks} weeks{else}A week{/if} ago]]></item>
                <item name="wcf.date.interval.years.past"><![CDATA[{if $years > 1}{#$years} years{else}A year{/if} ago]]></item>
-               
                <item name="wcf.date.interval.days.past.inSentence"><![CDATA[{if $days > 1}{#$days} days{else}a day{/if} ago]]></item>
                <item name="wcf.date.interval.full.past.inSentence"><![CDATA[{if $years}{if $years > 1}{#$years} years{else}a year{/if}{/if}{if $months}{if $firstElement != 'months'}{if $lastElement == 'months'} and {else}, {/if}{/if}{if $months > 1}{#$months} months{else}a month{/if}{/if}{if $weeks}{if $firstElement != 'weeks'}{if $lastElement == 'weeks'} and {else}, {/if}{/if}{if $weeks > 1}{#$weeks} weeks{else}{if $firstElement == 'weeks'}a{else}a{/if} week{/if}{/if}{if $days}{if $firstElement != 'days'}{if $lastElement == 'days'} and {else}, {/if}{/if}{if $days > 1}{#$days} days{else}{if $firstElement == 'days'}{else}a{/if} day{/if}{/if}{if $hours}{if $firstElement != 'hours'}{if $lastElement == 'hours'} and {else}, {/if}{/if}{if $hours > 1}{#$hours} hours{else}{if $firstElement == 'hours'}an{else}an{/if} hour{/if}{/if}{if $minutes}{if $firstElement != 'minutes' && $lastElement == 'minutes'} and {/if}{if $minutes > 1}{#$minutes} minutes{else}{if $firstElement == 'minutes'}a{else}a{/if} minute{/if}{/if} ago]]></item>
                <item name="wcf.date.interval.hours.past.inSentence"><![CDATA[{if $hours > 1}{#$hours} hours{else}an hour{/if} ago]]></item>
@@ -3119,7 +3224,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.interval.months.past.inSentence"><![CDATA[{if $months > 1}{#$months} months{else}a Month{/if} ago]]></item>
                <item name="wcf.date.interval.weeks.past.inSentence"><![CDATA[{if $weeks > 1}{#$weeks} weeks{else}a week{/if} ago]]></item>
                <item name="wcf.date.interval.years.past.inSentence"><![CDATA[{if $years > 1}{#$years} years{else}a year{/if} ago]]></item>
-               
                <item name="wcf.date.interval.days.future"><![CDATA[In {if $days > 1}{#$days} days{else}a day{/if}]]></item>
                <item name="wcf.date.interval.full.future"><![CDATA[In {if $years}{if $years > 1}{#$years} years{else}a year{/if}{/if}{if $months}{if $firstElement != 'months'}{if $lastElement == 'months'} and {else}, {/if}{/if}{if $months > 1}{#$months} months{else}a month{/if}{/if}{if $weeks}{if $firstElement != 'weeks'}{if $lastElement == 'weeks'} and {else}, {/if}{/if}{if $weeks > 1}{#$weeks} weeks{else}a week{/if}{/if}{if $days}{if $firstElement != 'days'}{if $lastElement == 'days'} and {else}, {/if}{/if}{if $days > 1}{#$days} days{else}a day{/if}{/if}{if $hours}{if $firstElement != 'hours'}{if $lastElement == 'hours'} and {else}, {/if}{/if}{if $hours > 1}{#$hours} hours{else}an hour{/if}{/if}{if $minutes}{if $firstElement != 'minutes' && $lastElement == 'minutes'} and {/if}{if $minutes > 1}{#$minutes} minutes{else}a minute{/if}{/if}]]></item>
                <item name="wcf.date.interval.hours.future"><![CDATA[In {if $hours > 1}{#$hours} hours{else}an hour{/if}]]></item>
@@ -3127,7 +3231,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.interval.months.future"><![CDATA[In {if $months > 1}{#$months} months{else}a Month{/if}]]></item>
                <item name="wcf.date.interval.weeks.future"><![CDATA[In {if $weeks > 1}{#$weeks} weeks{else}a week{/if}]]></item>
                <item name="wcf.date.interval.years.future"><![CDATA[In {if $years > 1}{#$years} years{else}a year{/if}]]></item>
-               
                <item name="wcf.date.interval.days.future.inSentence"><![CDATA[in {if $days > 1}{#$days} days{else}a day{/if}]]></item>
                <item name="wcf.date.interval.full.future.inSentence"><![CDATA[in {if $years}{if $years > 1}{#$years} years{else}a year{/if}{/if}{if $months}{if $firstElement != 'months'}{if $lastElement == 'months'} and {else}, {/if}{/if}{if $months > 1}{#$months} months{else}a month{/if}{/if}{if $weeks}{if $firstElement != 'weeks'}{if $lastElement == 'weeks'} and {else}, {/if}{/if}{if $weeks > 1}{#$weeks} weeks{else}a week{/if}{/if}{if $days}{if $firstElement != 'days'}{if $lastElement == 'days'} and {else}, {/if}{/if}{if $days > 1}{#$days} days{else}a day{/if}{/if}{if $hours}{if $firstElement != 'hours'}{if $lastElement == 'hours'} and {else}, {/if}{/if}{if $hours > 1}{#$hours} hours{else}an hour{/if}{/if}{if $minutes}{if $firstElement != 'minutes' && $lastElement == 'minutes'} and {/if}{if $minutes > 1}{#$minutes} minutes{else}a minute{/if}{/if}]]></item>
                <item name="wcf.date.interval.hours.future.inSentence"><![CDATA[in {if $hours > 1}{#$hours} hours{else}an hour{/if}]]></item>
@@ -3135,7 +3238,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.interval.months.future.inSentence"><![CDATA[in {if $months > 1}{#$months} months{else}a Month{/if}]]></item>
                <item name="wcf.date.interval.weeks.future.inSentence"><![CDATA[in {if $weeks > 1}{#$weeks} weeks{else}a week{/if}]]></item>
                <item name="wcf.date.interval.years.future.inSentence"><![CDATA[in {if $years > 1}{#$years} years{else}a year{/if}]]></item>
-               
                <item name="wcf.date.interval.days.plain"><![CDATA[{if $days > 1}{#$days} days{else}one day{/if}]]></item>
                <item name="wcf.date.interval.full.plain"><![CDATA[{if $years}{if $years > 1}{#$years} years{else}one year{/if}{/if}{if $months}{if $firstElement != 'months'}{if $lastElement == 'months'} and {else}, {/if}{/if}{if $months > 1}{#$months} months{else}one month{/if}{/if}{if $weeks}{if $firstElement != 'weeks'}{if $lastElement == 'weeks'} and {else}, {/if}{/if}{if $weeks > 1}{#$weeks} weeks{else}one week{/if}{/if}{if $days}{if $firstElement != 'days'}{if $lastElement == 'days'} and {else}, {/if}{/if}{if $days > 1}{#$days} days{else}one day{/if}{/if}{if $hours}{if $firstElement != 'hours'}{if $lastElement == 'hours'} and {else}, {/if}{/if}{if $hours > 1}{#$hours} hours{else}one hour{/if}{/if}{if $minutes}{if $firstElement != 'minutes' && $lastElement == 'minutes'} and {/if}{if $minutes > 1}{#$minutes} minutes{else}one minute{/if}{/if}]]></item>
                <item name="wcf.date.interval.hours.plain"><![CDATA[{if $hours > 1}{#$hours} hours{else}one hour{/if}]]></item>
@@ -3143,18 +3245,15 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.interval.months.plain"><![CDATA[{if $months > 1}{#$months} months{else}one Month{/if}]]></item>
                <item name="wcf.date.interval.weeks.plain"><![CDATA[{if $weeks > 1}{#$weeks} weeks{else}one week{/if}]]></item>
                <item name="wcf.date.interval.years.plain"><![CDATA[{if $years > 1}{#$years} years{else}one year{/if}]]></item>
-               
                <!-- variables for time periods -->
                <item name="wcf.date.period.older"><![CDATA[Older]]></item>
                <item name="wcf.date.period.today"><![CDATA[Today]]></item>
                <item name="wcf.date.period.yesterday"><![CDATA[Yesterday]]></item>
-               
                <!-- variables for relative datetime -->
                <item name="wcf.date.relative.now"><![CDATA[A moment ago]]></item>
                <item name="wcf.date.relative.minutes"><![CDATA[{if $minutes > 1}{#$minutes} minutes{else}A minute{/if} ago]]></item>
                <item name="wcf.date.relative.hours"><![CDATA[{if $hours > 1}{#$hours} hours{else}An hour{/if} ago]]></item>
                <item name="wcf.date.relative.pastDays"><![CDATA[{if $days > 1}{$day}{else}Yesterday{/if}, {$time}]]></item>
-               
                <!-- variables for localized date formats -->
                <item name="wcf.date.hour"><![CDATA[Hour]]></item>
                <item name="wcf.date.minute"><![CDATA[Minute]]></item>
@@ -3189,7 +3288,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.day.thu"><![CDATA[Thu]]></item>
                <item name="wcf.date.day.fri"><![CDATA[Fri]]></item>
                <item name="wcf.date.day.sat"><![CDATA[Sat]]></item>
-               
                <!-- localized days -->
                <item name="wcf.date.day.sunday"><![CDATA[Sunday]]></item>
                <item name="wcf.date.day.monday"><![CDATA[Monday]]></item>
@@ -3198,7 +3296,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.day.thursday"><![CDATA[Thursday]]></item>
                <item name="wcf.date.day.friday"><![CDATA[Friday]]></item>
                <item name="wcf.date.day.saturday"><![CDATA[Saturday]]></item>
-               
                <!-- time zones -->
                <item name="wcf.date.timezone.pacific.samoa"><![CDATA[(UTC-11:00) American Samoa, Midway]]></item>
                <item name="wcf.date.timezone.pacific.honolulu"><![CDATA[(UTC-10:00) Hawaii]]></item>
@@ -3293,7 +3390,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.timezone.pacific.fiji"><![CDATA[(UTC+12:00) Fiji]]></item>
                <item name="wcf.date.timezone.pacific.tongatapu"><![CDATA[(UTC+13:00) Nukuʻalofa]]></item>
                <item name="wcf.date.timezone.pacific.apia"><![CDATA[(UTC+13:00) Samoa]]></item>
-               
                <item name="wcf.date.period.start"><![CDATA[from]]></item>
                <item name="wcf.date.period.end"><![CDATA[to]]></item>
                <item name="wcf.date.firstDayOfTheWeek"><![CDATA[0]]></item>
@@ -3305,7 +3401,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.date.startTime.error.invalid"><![CDATA[The start time is invalid.]]></item>
                <item name="wcf.date.endTime.error.invalid"><![CDATA[The end time is invalid.]]></item>
        </category>
-       
        <category name="wcf.edit">
                <item name="wcf.edit.version"><![CDATA[Version]]></item>
                <item name="wcf.edit.versions"><![CDATA[Versions]]></item>
@@ -3322,18 +3417,16 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.edit.headline.new"><![CDATA[{if $newID == 'current'}Current version{else}Version{/if} as of {@$new->time|plainTime} ({$new->username})]]></item>
                <item name="wcf.edit.headline.newOrCurrent"><![CDATA[{if $newID == 'current'}Current version{else}Version as of {@$new->time|plainTime}{/if}{if $new->username} ({$new->username}){/if}]]></item>
        </category>
-       
        <category name="wcf.editor">
                <item name="wcf.editor.alignment.center"><![CDATA[Align center]]></item>
                <item name="wcf.editor.alignment.justify"><![CDATA[Align justify]]></item>
                <item name="wcf.editor.alignment.left"><![CDATA[Align left]]></item>
                <item name="wcf.editor.alignment.right"><![CDATA[Align right]]></item>
-               
                <item name="wcf.editor.autosave.discard"><![CDATA[Discard and revert editor]]></item>
                <item name="wcf.editor.autosave.keep"><![CDATA[Hide notice]]></item>
                <item name="wcf.editor.autosave.restored"><![CDATA[Draft restored]]></item>
-               
                <item name="wcf.editor.button.alignment"><![CDATA[Alignment]]></item>
+               <item name="wcf.editor.button.article"><![CDATA[CMS Article]]></item>
                <item name="wcf.editor.button.bold"><![CDATA[Bold]]></item>
                <item name="wcf.editor.button.code"><![CDATA[Code]]></item>
                <item name="wcf.editor.button.color"><![CDATA[Font Color]]></item>
@@ -3362,7 +3455,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.editor.button.underline"><![CDATA[Underline]]></item>
                <item name="wcf.editor.button.undo"><![CDATA[Undo]]></item>
                <item name="wcf.editor.button.woltlabHtml"><![CDATA[Unsafe HTML]]></item>
-               
                <item name="wcf.editor.code.edit"><![CDATA[Edit Code]]></item>
                <item name="wcf.editor.code.file"><![CDATA[Filename]]></item>
                <item name="wcf.editor.code.file.description"><![CDATA[Optional: Specify the displayed filename.]]></item>
@@ -3372,15 +3464,12 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.editor.code.line"><![CDATA[Start Line Number]]></item>
                <item name="wcf.editor.code.line.description"><![CDATA[Optional: Specify the start for line enumeration.]]></item>
                <item name="wcf.editor.code.title"><![CDATA[{if $highlighter}{$highlighter}{else}Code{/if}{if $file} - {$file}{/if}]]></item>
-               
                <item name="wcf.editor.format.heading2"><![CDATA[Heading 1]]></item>
                <item name="wcf.editor.format.heading3"><![CDATA[Heading 2]]></item>
                <item name="wcf.editor.format.heading4"><![CDATA[Heading 3]]></item>
                <item name="wcf.editor.format.paragraph"><![CDATA[Normal text]]></item>
-               
                <item name="wcf.editor.html.description"><![CDATA[Contents will be evaluated unchecked.]]></item>
                <item name="wcf.editor.html.title"><![CDATA[Unsafe HTML]]></item>
-               
                <item name="wcf.editor.image.edit"><![CDATA[Edit Image]]></item>
                <item name="wcf.editor.image.insert"><![CDATA[Insert Image]]></item>
                <item name="wcf.editor.image.link"><![CDATA[Link]]></item>
@@ -3391,31 +3480,25 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.editor.image.source"><![CDATA[Source]]></item>
                <item name="wcf.editor.image.source.error.insecure"><![CDATA[Insecure sources (“http://”) for images have been disabled, please use secure sources only (“https://”).]]></item>
                <item name="wcf.editor.image.source.error.invalid"><![CDATA[You have entered an invalid link.]]></item>
-               
                <item name="wcf.editor.link.add"><![CDATA[Insert Link]]></item>
                <item name="wcf.editor.link.edit"><![CDATA[Edit Link]]></item>
                <item name="wcf.editor.link.error.invalid"><![CDATA[You have entered an invalid link.]]></item>
                <item name="wcf.editor.link.unlink"><![CDATA[Unlink]]></item>
                <item name="wcf.editor.link.url"><![CDATA[Link]]></item>
                <item name="wcf.editor.link.text"><![CDATA[Text]]></item>
-               
                <item name="wcf.editor.list.indent"><![CDATA[Indent]]></item>
                <item name="wcf.editor.list.outdent"><![CDATA[Outdent]]></item>
-               
                <item name="wcf.editor.quote.author"><![CDATA[Source]]></item>
                <item name="wcf.editor.quote.edit"><![CDATA[Edit Quote]]></item>
                <item name="wcf.editor.quote.title"><![CDATA[{if $author}Quote from {@$author}{else}Quote{/if}]]></item>
                <item name="wcf.editor.quote.url"><![CDATA[Link]]></item>
                <item name="wcf.editor.quote.url.description"><![CDATA[Optional: Specify the link to the source.]]></item>
                <item name="wcf.editor.quote.url.error.invalid"><![CDATA[You have entered an invalid link.]]></item>
-               
                <item name="wcf.editor.source.error.active"><![CDATA[Please return to the normal view before submitting.]]></item>
-               
                <item name="wcf.editor.spoiler.label"><![CDATA[Label]]></item>
                <item name="wcf.editor.spoiler.label.description"><![CDATA[Optional: Specify the label for the spoiler toggle button.]]></item>
                <item name="wcf.editor.spoiler.edit"><![CDATA[Edit Spoiler]]></item>
                <item name="wcf.editor.spoiler.title"><![CDATA[Spoiler{if $label}: {$label}{/if}]]></item>
-               
                <item name="wcf.editor.table.addHead"><![CDATA[Add head]]></item>
                <item name="wcf.editor.table.cols"><![CDATA[Columns]]></item>
                <item name="wcf.editor.table.deleteColumn"><![CDATA[Delete column]]></item>
@@ -3429,7 +3512,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.editor.table.insertRowBelow"><![CDATA[Insert row below]]></item>
                <item name="wcf.editor.table.rows"><![CDATA[Rows]]></item>
        </category>
-       
        <category name="wcf.global">
                <item name="wcf.global.button.add"><![CDATA[Add]]></item>
                <item name="wcf.global.button.back"><![CDATA[« Back]]></item>
@@ -3496,7 +3578,8 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.global.page.next"><![CDATA[Next Page]]></item>
                <item name="wcf.global.page.pagination"><![CDATA[Navigation]]></item>
                <item name="wcf.global.page.previous"><![CDATA[Previous Page]]></item>
-               <item name="wcf.global.pageDirection"><![CDATA[ltr]]></item> <!-- system variable; do not translate -->
+               <item name="wcf.global.pageDirection"><![CDATA[ltr]]></item>
+               <!-- system variable; do not translate -->
                <item name="wcf.global.scrollDown"><![CDATA[Go to Page Bottom]]></item>
                <item name="wcf.global.scrollUp"><![CDATA[Go to Page Top]]></item>
                <item name="wcf.global.search.enterSearchTerm"><![CDATA[Search …]]></item>
@@ -3535,7 +3618,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <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>
@@ -3548,27 +3630,25 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.global.form.error.noValidSelection"><![CDATA[Choose one of the available options.]]></item>
                <item name="wcf.global.form.error.securityToken"><![CDATA[Your session has expired, please submit the form again.]]></item>
                <item name="wcf.global.form.input.maxItems"><![CDATA[Maximum items reached]]></item>
-               
                <!-- deprecated since 2.1 -->
                <item name="wcf.global.form.error.greaterThan.javaScript"><![CDATA[{literal}The entered value has to be greater than {#$greaterThan}.{/literal}]]></item>
                <item name="wcf.global.form.error.lessThan.javaScript"><![CDATA[{literal}The entered value has to be less than {#$lessThan}.{/literal}]]></item>
                <!-- /deprecated since 2.1 -->
-       </category>
-       
+</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.description.interface"><![CDATA[The entered class (without leading backslash) must implement the interface <kbd>{$interface}</kbd>.]]></item>
+               <item name="wcf.form.field.className.description.parentClass"><![CDATA[The entered class (without leading backslash) must extend the class <kbd>{$parentClass}</kbd>.]]></item>
+               <item name="wcf.form.field.className.error.interface"><![CDATA[The entered class{if $language|isset} ({$language}){/if} does not implement the interface <kbd>{$interface}</kbd>.]]></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.className.error.parentClass"><![CDATA[The entered class{if $language|isset} ({$language}){/if} does not extend <kbd>{$parentClass}</kbd>.]]></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.option.error.nonExistent"><![CDATA[The following options do not exist: {implode from=$options item=option}<kbd>{$option}</kbd>{/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>
@@ -3577,11 +3657,12 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <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.userGroupOption.error.nonExistent"><![CDATA[The following permissions do not exist: {implode from=$options item=option}<kbd>{$option}</kbd>{/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 !== ''}<kbd>{$segment}</kbd>{else}(empty){/if} (segment {#$segmentNumber + 1}){/implode}.]]></item>
+               <item name="wcf.form.field.url.error.invalid"><![CDATA[The entered link is invalid.]]></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>
@@ -3593,7 +3674,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.imageViewer.next"><![CDATA[Next Image]]></item>
                <item name="wcf.imageViewer.previous"><![CDATA[Previous Image]]></item>
        </category>
-       
        <category name="wcf.label">
                <item name="wcf.label.all"><![CDATA[All]]></item>
                <item name="wcf.label.error.missing"><![CDATA[You are required to select a label.]]></item>
@@ -3603,7 +3683,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.label.none"><![CDATA[No Selection]]></item>
                <item name="wcf.label.withoutSelection"><![CDATA[Without Label]]></item>
        </category>
-       
        <category name="wcf.like">
                <item name="wcf.like.cumulativeLikes"><![CDATA[Likes]]></item>
                <item name="wcf.like.tooltip"><![CDATA[{if $likes}{#$likes} Like{if $likes != 1}s{/if}{if $dislikes}, {/if}{/if}{if $dislikes}{#$dislikes} Dislike{if $dislikes != 1}s{/if}{/if}]]></item>
@@ -3640,7 +3719,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.like.reactionReputation"><![CDATA[Reputation from Reactions]]></item>
                <item name="wcf.like.reputation"><![CDATA[Reputation]]></item>
        </category>
-       
        <category name="wcf.map">
                <item name="wcf.map.noLocationSuggestions"><![CDATA[There are no location suggestions in the current map section.]]></item>
                <item name="wcf.map.route.button.calculateRoute"><![CDATA[Calculate Route]]></item>
@@ -3658,7 +3736,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.map.showLocationSuggestions"><![CDATA[Suggest Locations]]></item>
                <item name="wcf.map.useLocationSuggestion"><![CDATA[Use Location]]></item>
        </category>
-       
        <category name="wcf.media">
                <item name="wcf.media.altText"><![CDATA[Alternate Text]]></item>
                <item name="wcf.media.button.insert"><![CDATA[Insert]]></item>
@@ -3698,7 +3775,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.media.downloads"><![CDATA[Downloads]]></item>
                <item name="wcf.media.lastDownloadTime"><![CDATA[Last Download]]></item>
        </category>
-       
        <category name="wcf.message">
                <item name="wcf.message.autosave.prompt"><![CDATA[Restore saved draft?]]></item>
                <item name="wcf.message.autosave.prompt.confirm"><![CDATA[Restore draft]]></item>
@@ -3747,17 +3823,14 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.message.toc.hide"><![CDATA[hide]]></item>
                <item name="wcf.message.toc.show"><![CDATA[show]]></item>
        </category>
-       
        <category name="wcf.menu">
                <!-- category for menus and menu items -->
-               
                <item name="wcf.menu.page"><![CDATA[Menu]]></item>
                <item name="wcf.menu.page.location"><![CDATA[Current Location]]></item>
                <item name="wcf.menu.page.navigation"><![CDATA[Navigation]]></item>
                <item name="wcf.menu.page.options"><![CDATA[Options]]></item>
                <item name="wcf.menu.user"><![CDATA[User Menu]]></item>
        </category>
-       
        <category name="wcf.moderation">
                <item name="wcf.moderation.assignedUser"><![CDATA[Assigned User]]></item>
                <item name="wcf.moderation.assignedUser.change"><![CDATA[Change Assigned User]]></item>
@@ -3771,7 +3844,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.moderation.outstandingItems"><![CDATA[Pending Items]]></item>
                <item name="wcf.moderation.doneItems"><![CDATA[Resolved Items]]></item>
                <item name="wcf.moderation.lastChangeTime"><![CDATA[Last Change]]></item>
-               <item name="wcf.moderation.markAllAsRead.confirmMessage"><![CDATA[Do you really want to mark all entries as read?]]></item>
                <item name="wcf.moderation.moderation"><![CDATA[Moderation]]></item>
                <item name="wcf.moderation.noMoreItems"><![CDATA[You have no recent items.]]></item>
                <item name="wcf.moderation.notification.comment.title"><![CDATA[New comment (Moderation)]]></item>
@@ -3814,7 +3886,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.moderation.markAllAsRead"><![CDATA[Mark All Items Read]]></item>
                <item name="wcf.moderation.markAsRead.doubleClick"><![CDATA[Double-Click to Mark This Item Read]]></item>
        </category>
-       
        <category name="wcf.moderation.activation">
                <item name="wcf.moderation.activation"><![CDATA[Approval]]></item>
                <item name="wcf.moderation.activation.details"><![CDATA[Information]]></item>
@@ -3836,7 +3907,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.moderation.activation.removeContent"><![CDATA[Delete Content]]></item>
                <item name="wcf.moderation.activation.removeContent.confirmMessage"><![CDATA[Do you really want to delete this content?]]></item>
        </category>
-       
        <category name="wcf.moderation.report">
                <item name="wcf.moderation.report"><![CDATA[Report]]></item>
                <item name="wcf.moderation.report.alreadyReported"><![CDATA[This content has already been reported.]]></item>
@@ -3866,11 +3936,9 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.moderation.report.reportedContent"><![CDATA[Reported Content]]></item>
                <item name="wcf.moderation.report.success"><![CDATA[The content has been reported.]]></item>
        </category>
-       
        <category name="wcf.notice">
                <item name="wcf.notice.button.dismiss"><![CDATA[Permanently dismiss this notice]]></item>
        </category>
-       
        <category name="wcf.page">
                <item name="wcf.page.pageNo"><![CDATA[Page {#$pageNo}]]></item>
                <item name="wcf.page.offline"><![CDATA[Page is currently in maintenance mode{if OFFLINE_MESSAGE != ''}:{else}.{/if}]]></item>
@@ -3890,6 +3958,8 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.page.error.illegalLink"><![CDATA[Sorry, but the page you are looking for has not been found. Try checking the URL for errors, then hit the refresh button on your browser.]]></item>
                <item name="wcf.page.error.illegalLink.title"><![CDATA[Page Not Found]]></item>
                <item name="wcf.page.error.backward"><![CDATA[Back to previous page.]]></item>
+               <item name="wcf.page.error.insufficientPermissions"><![CDATA[Insufficient Permissions]]></item>
+               <item name="wcf.page.error.loginAvailable"><![CDATA[This page or section may be accessible for authorized users only.]]></item>
                <item name="wcf.page.jumpTo"><![CDATA[Go to Page]]></item>
                <item name="wcf.page.jumpTo.description"><![CDATA[Enter a value between “1” and “#pages#”.]]></item>
                <item name="wcf.page.redirect.title"><![CDATA[Redirection]]></item>
@@ -3918,7 +3988,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.page.sidebar.right"><![CDATA[Right Sidebar]]></item>
                <item name="wcf.page.breadcrumb"><![CDATA[Breadcrumb]]></item>
        </category>
-       
        <category name="wcf.acp.page">
                <item name="wcf.acp.page.add"><![CDATA[Add Page]]></item>
                <item name="wcf.acp.page.application"><![CDATA[App]]></item>
@@ -3932,6 +4001,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.acp.page.boxOrder.position.content"><![CDATA[(Content)]]></item>
                <item name="wcf.acp.page.button.boxOrder"><![CDATA[Sort Boxes]]></item>
                <item name="wcf.acp.page.button.viewPage"><![CDATA[Show Preview]]></item>
+               <item name="wcf.acp.page.button.copyPage"><![CDATA[Copy Page]]></item>
                <item name="wcf.acp.page.content"><![CDATA[Content]]></item>
                <item name="wcf.acp.page.contents"><![CDATA[Contents]]></item>
                <item name="wcf.acp.page.customURL"><![CDATA[Custom URL]]></item>
@@ -3971,8 +4041,9 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <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>
+               <item name="wcf.acp.page.copy"><![CDATA[Copy Page]]></item>
+               <item name="wcf.acp.page.copy.description"><![CDATA[The values entered for this page will be used as a preset to create a new page. Only values editable in this form are included.<br><br>You’ll need to submit the form to save the new page. You can make changes to the new page by editing the values in that form, please bear in mind that new pages are disabled by default.]]></item>
        </category>
-       
        <category name="wcf.paidSubscription">
                <item name="wcf.paidSubscription.availableSubscriptions"><![CDATA[Available Subscriptions]]></item>
                <item name="wcf.paidSubscription.purchasedSubscriptions"><![CDATA[Purchased Subscriptions]]></item>
@@ -3986,13 +4057,11 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.paidSubscription.expiringSubscription.notification.mail.plaintext"><![CDATA[Your subscription “{$subscription->getTitle()}” will expire {dateInterval start=$notification->time end=$subscription->endDate format='sentence'} (on {$subscription->endDate|date:'F jS'}).]]></item>
                <item name="wcf.paidSubscription.expiringSubscription.notification.mail.html"><![CDATA[Your subscription “{$subscription->getTitle()}” will expire <b>{dateInterval start=$notification->time end=$subscription->endDate format='sentence'}</b> (on {$subscription->endDate|date:'F jS'}).]]></item>
        </category>
-       
        <category name="wcf.payment">
                <item name="wcf.payment.com.woltlab.wcf.payment.method.paypal"><![CDATA[Use PayPal]]></item>
                <item name="wcf.payment.paypal.button.purchase"><![CDATA[Purchase with PayPal]]></item>
                <item name="wcf.payment.paypal.button.subscribe"><![CDATA[Subscribe with PayPal]]></item>
        </category>
-       
        <category name="wcf.poll">
                <item name="wcf.poll.button.addOption"><![CDATA[Add Another Option]]></item>
                <item name="wcf.poll.button.removeOption"><![CDATA[Remove Option]]></item>
@@ -4019,14 +4088,12 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.poll.totalVotes"><![CDATA[A total of {#$poll->votes} vote{if $poll->votes != 1}s{/if}]]></item>
                <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>
@@ -4034,7 +4101,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <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>
@@ -4044,7 +4110,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.recaptcha.help"><![CDATA[Help]]></item>
                <item name="wcf.recaptcha.error.recaptchaString.false"><![CDATA[You have entered the security code incorrectly. Please try again.]]></item>
        </category>
-       
        <category name="wcf.search">
                <item name="wcf.search.author"><![CDATA[Search by Author]]></item>
                <item name="wcf.search.extended"><![CDATA[More Options]]></item>
@@ -4069,7 +4134,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.search.object.com.woltlab.wcf.page"><![CDATA[Page]]></item>
                <item name="wcf.search.type.com.woltlab.wcf.page"><![CDATA[Pages]]></item>
        </category>
-       
        <category name="wcf.style">
                <item name="wcf.style.changeStyle"><![CDATA[Change Style]]></item>
                <item name="wcf.style.colorPicker"><![CDATA[Color Picker]]></item>
@@ -4078,7 +4142,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.style.currentStyle"><![CDATA[Current Style]]></item>
                <item name="wcf.style.colorPicker.button.apply"><![CDATA[Apply]]></item>
        </category>
-       
        <category name="wcf.tagging">
                <item name="wcf.tagging.tags"><![CDATA[Tags]]></item>
                <item name="wcf.tagging.tags.add"><![CDATA[Tags]]></item>
@@ -4088,7 +4151,6 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.tagging.objectType.com.woltlab.wcf.article"><![CDATA[Articles]]></item>
                <item name="wcf.tagging.taggedObjects.com.woltlab.wcf.article"><![CDATA[Articles Tagged With “{$tag->name}”]]></item>
        </category>
-       
        <category name="wcf.user">
                <item name="wcf.user.confirmEmail"><![CDATA[Confirm Email]]></item>
                <item name="wcf.user.confirmPassword"><![CDATA[Confirm Password]]></item>
@@ -4099,6 +4161,7 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.user.email.error.notUnique"><![CDATA[The email is already in use.]]></item>
                <item name="wcf.user.email.error.invalid"><![CDATA[The email is invalid.]]></item>
                <item name="wcf.user.ipAddress"><![CDATA[IP Address]]></item>
+               <item name="wcf.user.ipAddress.searchEngine"><![CDATA[Search for {if !$ipAddress|empty}{$ipAddress}{else}this IP address{/if} {if !$host|empty}on {$host}{/if}]]></item>
                <item name="wcf.user.userAgent"><![CDATA[User Agent]]></item>
                <item name="wcf.user.login"><![CDATA[Login]]></item>
                <item name="wcf.user.login.error.cookieRequired"><![CDATA[The login requires the acceptance of cookies, please enable cookies to proceed.]]></item>
@@ -4146,7 +4209,8 @@ Email: {@$emailAddress} {* this line ends with a space *}
                <item name="wcf.user.gender.male"><![CDATA[Male]]></item>
                <item name="wcf.user.gender.female"><![CDATA[Female]]></item>
                <item name="wcf.user.members"><![CDATA[Members]]></item>
-               <item name="wcf.user.members.noMembers"><![CDATA[No members matched your criteria.]]></item>
+               <item name="wcf.user.members.filter"><![CDATA[Filter Members]]></item>
+               <item name="wcf.user.members.noMembers"><![CDATA[No members matched your criteria. <a href="{link controller='MembersList'}{/link}">Reset the applied filters.</a>]]></item>
                <item name="wcf.user.members.sort"><![CDATA[Sort by]]></item>
                <item name="wcf.user.members.sort.letters"><![CDATA[First Letter]]></item>
                <item name="wcf.user.members.sort.letters.all"><![CDATA[All]]></item>
@@ -4232,7 +4296,7 @@ the website <a href="{link isEmail=true}{/link}">{@PAGE_TITLE|language}</a>.</p>
 this change it is required to confirm your new email address once:</p>]]></item>
                <item name="wcf.user.changeEmail.needReactivation.mail.html.activate"><![CDATA[Confirm my email address]]></item>
                <item name="wcf.user.changeEmail.needReactivation.mail.html.outro"><![CDATA[
-<p>Your activation code is: <code>{$mailbox->getUser()->reactivationCode}</code>.</p>
+<p>Your activation code is: <kbd>{$mailbox->getUser()->reactivationCode}</kbd>.</p>
 <p>If you have troubles confirming your email address, please contact the administrator at:
 <a href="mailto:{MAIL_ADMIN_ADDRESS}">{MAIL_ADMIN_ADDRESS}</a>. Please ignore this email if
 you did not register an account with us.</p>]]></item>
@@ -4307,6 +4371,12 @@ not register with us.]]></item>
                <item name="wcf.user.disableAvatar.expires.description"><![CDATA[The avatar of the user will automatically be unblocked at the set time.]]></item>
                <item name="wcf.user.disableAvatar.neverExpires"><![CDATA[Permanently Block]]></item>
                <item name="wcf.user.enableAvatar"><![CDATA[Unblock Avatar]]></item>
+               <item name="wcf.user.disableCoverPhoto"><![CDATA[Block Cover Photo]]></item>
+               <item name="wcf.user.disableCoverPhoto.confirmMessage"><![CDATA[Do you really want to block the cover photo of this user?]]></item>
+               <item name="wcf.user.disableCoverPhoto.expires"><![CDATA[Unblocking]]></item>
+               <item name="wcf.user.disableCoverPhoto.expires.description"><![CDATA[The cover photo of the user will automatically be unblocked at the set time.]]></item>
+               <item name="wcf.user.disableCoverPhoto.neverExpires"><![CDATA[Permanently Block]]></item>
+               <item name="wcf.user.enableCoverPhoto"><![CDATA[Unblock Cover Photo]]></item>
                <item name="wcf.user.disableSignature"><![CDATA[Block Signature]]></item>
                <item name="wcf.user.disableSignature.confirmMessage"><![CDATA[Do you really want to block the signature of this user?]]></item>
                <item name="wcf.user.disableSignature.expires"><![CDATA[Unblocking]]></item>
@@ -4330,9 +4400,9 @@ 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.sortField.reactionReputation"><![CDATA[Reputation from Reactions]]></item>
                <item name="wcf.user.articles"><![CDATA[Articles]]></item>
        </category>
-       
        <category name="wcf.user.menu">
                <item name="wcf.user.menu.community"><![CDATA[Community]]></item>
                <item name="wcf.user.menu.community.notification"><![CDATA[Notifications]]></item>
@@ -4346,10 +4416,8 @@ not register with us.]]></item>
                <item name="wcf.user.menu.settings.notification"><![CDATA[Notifications]]></item>
                <item name="wcf.user.menu.settings.paidSubscription"><![CDATA[Paid Subscriptions]]></item>
        </category>
-       
        <category name="wcf.user.register">
                <item name="wcf.user.register"><![CDATA[Registration]]></item>
-               
                <!-- Need Activation -->
                <item name="wcf.user.register.needActivation"><![CDATA[Your user account is not activated yet. You must complete the <a href="{link controller='RegisterActivation'}{/link}">activation process</a> first.]]></item>
                <item name="wcf.user.register.needActivation.mail.subject"><![CDATA[Activate Your Registration for Website: {@PAGE_TITLE|language}]]></item>
@@ -4359,7 +4427,7 @@ not register with us.]]></item>
 user account to it’s full extent it is required that you confirm validity of your email address once:</p>]]></item>
                <item name="wcf.user.register.needActivation.mail.html.activate"><![CDATA[Confirm my email address]]></item>
                <item name="wcf.user.register.needActivation.mail.html.outro"><![CDATA[
-<p>Your activation code is: <code>{$mailbox->getUser()->activationCode}</code>.</p>
+<p>Your activation code is: <kbd>{$mailbox->getUser()->activationCode}</kbd>.</p>
 <p>If you have trouble confirming your email address, please contact the administrator at:
 <a href="mailto:{MAIL_ADMIN_ADDRESS}">{MAIL_ADMIN_ADDRESS}</a>. Please ignore this email if
 you did not register an account with us.</p>]]></item>
@@ -4376,7 +4444,6 @@ Your activation code is: {@$mailbox->getUser()->activationCode} {* this line end
 If you have trouble confirming your email address, please contact the
 administrator at: {@MAIL_ADMIN_ADDRESS}. Please ignore this email if you did
 not register with us.]]></item>
-               
                <!-- Success Messages -->
                <item name="wcf.user.register.success"><![CDATA[Thank you for registering, {$user->username}.<br>
 Your registration is now completed.]]></item>
@@ -4385,10 +4452,8 @@ An email was sent to “{$user->email}” containing a one-time link to verify y
                <item name="wcf.user.register.success.awaitActivation"><![CDATA[Thank you for registering, {$user->username}.<br>
 Your account is awaiting approval from an administrator.<br>
 A notification will be sent once your account has been approved.]]></item>
-               
                <!-- Error Messages -->
                <item name="wcf.user.register.error.disabled"><![CDATA[Registration is currently disabled.]]></item>
-               
                <!-- Administrator Notification -->
                <item name="wcf.user.register.notification.mail"><![CDATA[Dear Administrator,
 
@@ -4399,7 +4464,6 @@ Email address used: {@$user->email}
 Open the link below to access the user profile:
 {link controller='User' object=$user isEmail=true}{/link} ]]></item>
                <item name="wcf.user.register.notification.mail.subject"><![CDATA[New Registration with Your Website: {@PAGE_TITLE|language}]]></item>
-               
                <!-- Disclaimer -->
                <item name="wcf.user.register.disclaimer.accept"><![CDATA[Accept]]></item>
                <item name="wcf.user.register.disclaimer.decline"><![CDATA[Decline]]></item>
@@ -4420,7 +4484,6 @@ Open the link below to access the user profile:
 <p><br></p>
 <p><small><em>Source: <a href="http://www.mustervorlage.net/disclaimer-muster" class="externalURL">Mustervorlage.net</a></em></small></p>]]></item>
        </category>
-       
        <category name="wcf.user.trophy">
                <item name="wcf.user.trophy.trophyPoints"><![CDATA[Trophies]]></item>
                <item name="wcf.user.trophy.showTrophies"><![CDATA[Display Trophies of {$user->username}]]></item>
@@ -4436,7 +4499,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.trophy.condition.excludedTrophyCategories"><![CDATA[Excluded Trophy Categories]]></item>
                <item name="wcf.user.trophy.trophyAwarded"><![CDATA[{if $items == 1}Awarded once{else}Awarded {#$items} times{/if}]]></item>
        </category>
-       
        <category name="wcf.acp.trophy">
                <item name="wcf.acp.trophy"><![CDATA[Trophy]]></item>
                <item name="wcf.acp.trophy.description"><![CDATA[Description]]></item>
@@ -4470,7 +4532,6 @@ Open the link below to access the user profile:
                <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">
                <item name="wcf.user.usersOnline"><![CDATA[Users Online]]></item>
                <item name="wcf.user.usersOnline.detail"><![CDATA[
@@ -4496,7 +4557,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.usersOnline.record"><![CDATA[Record: {#USERS_ONLINE_RECORD} User{if USERS_ONLINE_RECORD != 1}s{/if} ({@USERS_ONLINE_RECORD_TIME|time})]]></item>
                <item name="wcf.user.usersOnline.users"><![CDATA[Users]]></item>
        </category>
-       
        <category name="wcf.user.recentActivity">
                <item name="wcf.user.recentActivity"><![CDATA[Recent Activities]]></item>
                <item name="wcf.user.recentActivity.more"><![CDATA[Display More]]></item>
@@ -4517,7 +4577,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.recentActivity.scope.followedUsers"><![CDATA[Filter by Followed Users]]></item>
                <item name="wcf.user.recentActivity.scope.followedUsers.noResults"><![CDATA[There are no recent activities by followed users. Displaying activity for all users.]]></item>
        </category>
-       
        <category name="wcf.user.3rdparty">
                <item name="wcf.user.3rdparty"><![CDATA[Third-Party Login]]></item>
                <item name="wcf.user.3rdparty.github"><![CDATA[GitHub]]></item>
@@ -4557,7 +4616,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.3rdparty.google.disconnect"><![CDATA[Cancel connection with Google]]></item>
                <item name="wcf.user.3rdparty.google.disconnect.success"><![CDATA[Your account is no longer connected with Google.]]></item>
        </category>
-       
        <category name="wcf.user.avatar">
                <item name="wcf.user.avatar"><![CDATA[Avatar]]></item>
                <item name="wcf.user.avatar.edit"><![CDATA[Avatar Management]]></item>
@@ -4576,7 +4634,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.avatar.upload.error.uploadFailed"><![CDATA[An unknown error occurred during the upload.]]></item>
                <item name="wcf.user.avatar.upload.success"><![CDATA[Your avatar has been saved.]]></item>
        </category>
-       
        <category name="wcf.user.condition">
                <item name="wcf.user.condition.activityPoints"><![CDATA[Points]]></item>
                <item name="wcf.user.condition.avatar"><![CDATA[Avatar]]></item>
@@ -4613,11 +4670,11 @@ 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.positiveReactionsReceived"><![CDATA[Positive Reactions]]></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">
                <item name="wcf.user.coverPhoto"><![CDATA[Cover Photo]]></item>
                <item name="wcf.user.coverPhoto.delete"><![CDATA[Delete Cover Photo]]></item>
@@ -4635,8 +4692,8 @@ Open the link below to access the user profile:
                <item name="wcf.user.coverPhoto.upload.error.minHeight"><![CDATA[The image is too small.]]></item>
                <item name="wcf.user.coverPhoto.upload.error.minWidth"><![CDATA[The image is too small.]]></item>
                <item name="wcf.user.coverPhoto.upload.error.uploadFailed"><![CDATA[An unknown error occurred during the upload.]]></item>
+               <item name="wcf.user.coverPhoto.upload.error.invalidExtension"><![CDATA[The file extension is invalid.]]></item>
        </category>
-       
        <category name="wcf.user.notification">
                <item name="wcf.user.notification.button.confirmed"><![CDATA[OK]]></item>
                <item name="wcf.user.notification.count"><![CDATA[if (data.returnValues.count == 0) { "No Notifications" } else if (data.returnValues.count == 1) { "1 Notification" } else { data.returnValues.count + " Notifications" }]]></item>
@@ -4655,7 +4712,6 @@ Open the link below to access the user profile:
                <item name="wcf.user.notification.mailNotificationType.instant"><![CDATA[Instant Email Notification]]></item>
                <item name="wcf.user.notification.mailNotificationType.daily"><![CDATA[Daily Email Notification]]></item>
                <item name="wcf.user.notification.mailNotificationType.notSupported"><![CDATA[Email Notifications are not supported.]]></item>
-               
                <!-- Email Wrapper -->
                <item name="wcf.user.notification.mail.subject"><![CDATA[New Notification: {@$title}]]></item>
                <item name="wcf.user.notification.mail.plaintext.intro"><![CDATA[Dear {@$mailbox->getUser()->username},]]></item>
@@ -4697,10 +4753,8 @@ If you wish to disable all email notifications you can do so by visiting:
 your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}</a> as you wish.</p>
 
 <p>You can <a href="{link controller='NotificationDisable' isEmail=true}userID={@$mailbox->getUser()->userID}&token={@$mailbox->getUser()->notificationMailToken}{/link}">disable all email notifications</a> as well.</p>]]></item>
-               
                <item name="wcf.user.notification.mail.authorList.plaintext"><![CDATA[{if !$event->getAuthor()->userID}{if $guestTimesTriggered > 1}Guests{else}A guest{/if}{else}{@$event->getAuthor()->username} [URL:{link controller='User' object=$event->getAuthor() isEmail=true}{/link}]{/if}{if $count > 1 && $count < 4}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->username} [URL:{link controller='User' object=$authors[1] isEmail=true}{/link}]{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if}{@$authors[2]->username} [URL:{link controller='User' object=$authors[2] isEmail=true}{/link}]{/if}{elseif $count >= 4}{if $guestTimesTriggered},{else} and{/if} {#$count-1} other users{/if}{if $event->getAuthor()->userID && $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}{#$guestTimesTriggered} guests{/if}{/if}]]></item>
                <item name="wcf.user.notification.mail.authorList.html"><![CDATA[{if !$event->getAuthor()->userID}{if $guestTimesTriggered > 1}Guests{else}A guest{/if}{else}<a href="{link controller='User' object=$event->getAuthor() isEmail=true}{/link}">{$event->getAuthor()->username}</a>{/if}{if $count > 1 && $count < 4}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}<a href="{link controller='User' object=$authors[1] isEmail=true}{/link}">{$authors[1]->username}</a>{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if}<a href="{link controller='User' object=$authors[2] isEmail=true}{/link}">{$authors[2]->username}</a>{/if}{elseif $count >= 4}{if $guestTimesTriggered},{else} and{/if} {#$count-1} other users{/if}{if $event->getAuthor()->userID && $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}{#$guestTimesTriggered} guests{/if}{/if}]]></item>
-               
                <!-- Notifications -->
                <item name="wcf.user.notification.com.woltlab.wcf.user"><![CDATA[User Profiles]]></item>
                <item name="wcf.user.notification.com.woltlab.wcf.user.follow.following"><![CDATA[Notify me of new followers]]></item>
@@ -4745,11 +4799,9 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <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>
                <item name="wcf.user.notification.trophy.received.message"><![CDATA[You received the trophy <a href="{$userTrophy->getTrophy()->getLink()}">{$userTrophy->getTrophy()->getTitle()}</a>.]]></item>
-               
                <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>
@@ -4765,13 +4817,13 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <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.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>
@@ -4793,14 +4845,16 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <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>
+               <item name="wcf.user.notification.com.woltlab.wcf.articleComment.response.notification.commentResponseOwner"><![CDATA[Notify me of new replies to comments on my articles]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.articleComment.response.notification.commentResponse"><![CDATA[Notify me of new replies to my comments]]></item>
+               <item name="wcf.user.notification.com.woltlab.wcf.articleComment.notification.comment"><![CDATA[Notify me of new comments on my articles]]></item>
+               <item name="wcf.user.notification.pageComment.responseOwner.title"><![CDATA[New reply (Page)]]></item>
        </category>
-       
        <category name="wcf.user.profile">
                <item name="wcf.user.profile.content.about.noPublicData"><![CDATA[{if $userID == $__wcf->getUser()->userID}You have not provided any details yet.{else}There are not any details visible to you.{/if}]]></item>
                <item name="wcf.user.profile.content.recentActivity.noEntries"><![CDATA[There are not any recent activities at the moment.]]></item>
@@ -4825,14 +4879,12 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <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">
                <item name="wcf.user.option.aboutMe"><![CDATA[About Me]]></item>
                <item name="wcf.user.option.adminCanMail"><![CDATA[Accept emails sent by administrators]]></item>
@@ -4845,7 +4897,6 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.option.canViewOnlineStatus"><![CDATA[Can View My Online Status]]></item>
                <item name="wcf.user.option.canViewProfile"><![CDATA[Can View My Profile]]></item>
                <item name="wcf.user.option.canViewTrophies"><![CDATA[Can View Trophies]]></item>
-               
                <item name="wcf.user.option.category.profile"><![CDATA[Personal Data]]></item>
                <item name="wcf.user.option.category.profile.aboutMe"><![CDATA[About Me]]></item>
                <item name="wcf.user.option.category.profile.contact"><![CDATA[Contact Options]]></item>
@@ -4858,7 +4909,6 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.option.category.settings.privacy"><![CDATA[Privacy]]></item>
                <item name="wcf.user.option.category.settings.privacy.content"><![CDATA[Content]]></item>
                <item name="wcf.user.option.category.settings.privacy.messaging"><![CDATA[Messaging]]></item>
-               
                <item name="wcf.user.option.gender"><![CDATA[Gender]]></item>
                <item name="wcf.user.option.hobbies"><![CDATA[Hobbies]]></item>
                <item name="wcf.user.option.homepage"><![CDATA[Website]]></item>
@@ -4875,11 +4925,9 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.option.canWriteProfileComments"><![CDATA[Can Write Comments on My Wall]]></item>
                <item name="wcf.user.option.editorPastePreserveFormatting"><![CDATA[Preserve text formatting when pasting into the editor]]></item>
                <item name="wcf.user.option.editorPastePreserveFormatting.description"><![CDATA[Disabling this option will force any content to be pasted from clipboard as plain text, stripping all formatting.]]></item>
-               
                <item name="wcf.user.option.searchRadioButtonOption"><![CDATA[User’s selection for “{lang}wcf.user.option.{$option->optionName}{/lang}”:]]></item>
                <item name="wcf.user.option.searchTextOption"><![CDATA[“{lang}wcf.user.option.{$option->optionName}{/lang}” contains:]]></item>
        </category>
-       
        <category name="wcf.user.mail">
                <item name="wcf.user.mail.information"><![CDATA[Details]]></item>
                <item name="wcf.user.mail.mail.subject"><![CDATA[Message From {@$username}: {@$subject}]]></item>
@@ -4888,7 +4936,7 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
 “{@$username}” sent you a message on {@PAGE_TITLE|language} [URL:{link isEmail=true}{/link}]:
 
 {@$message}]]></item>
-<item name="wcf.user.mail.mail.html"><![CDATA[<h2>Dear {$mailbox->getUser()->username},</h2>
+               <item name="wcf.user.mail.mail.html"><![CDATA[<h2>Dear {$mailbox->getUser()->username},</h2>
 
 <p>„{$username}“ sent you a message on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}</a>:</p>
 
@@ -4899,7 +4947,6 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.mail.showAddress"><![CDATA[Use my email address as sender address, the recipient can directly reply to me.]]></item>
                <item name="wcf.user.mail.subject"><![CDATA[Subject]]></item>
        </category>
-       
        <category name="wcf.user.rank">
                <item name="wcf.user.rank.administrator"><![CDATA[Administrator]]></item>
                <item name="wcf.user.rank.moderator"><![CDATA[Moderator]]></item>
@@ -4910,7 +4957,5 @@ your notifications on <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language}
                <item name="wcf.user.rank.user4"><![CDATA[Master]]></item>
                <item name="wcf.user.rank.user5"><![CDATA[Enlightened]]></item>
        </category>
-       
-       <!-- i18n categories -->
-       <category name="wcf.smiley" />
+       <category name="wcf.smiley"/>
 </language>