Replace lang prefilter with language modifier in template variables
authorMatthias Schmidt <gravatronics@live.com>
Wed, 10 Jul 2019 11:52:08 +0000 (13:52 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Wed, 10 Jul 2019 11:52:08 +0000 (13:52 +0200)
(or with a dedicated `getTitle()` method)

See #2963

wcfsetup/install/files/lib/data/user/option/UserOption.class.php
wcfsetup/install/files/lib/data/user/option/category/UserOptionCategory.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index f2b11a1e49831fa36d316740a40a6d3370df84da..c4731bb8d14ed012da4251c0ad9567d0190df4cd 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 namespace wcf\data\user\option;
+use wcf\data\ITitledObject;
 use wcf\data\option\Option;
 use wcf\data\user\User;
 use wcf\system\WCF;
@@ -22,7 +23,7 @@ use wcf\system\WCF;
  * @property-read      integer         $isDisabled             is `1` if the user option is disabled and thus neither shown nor editable, otherwise `0`
  * @property-read      integer         $originIsSystem         is `1` if the user option was created by the system and not manually by an administrator, otherwise `0`
  */
-class UserOption extends Option {
+class UserOption extends Option implements ITitledObject {
        /**
         * visible for no one (no valid bit)
         * @var integer
@@ -112,6 +113,13 @@ class UserOption extends Option {
         */
        public $user = null;
        
+       /**
+        * @inheritDoc
+        */
+       public function getTitle() {
+               return WCF::getLanguage()->get('wcf.user.option.' . $this->optionName);
+       }
+       
        /**
         * Sets target user object.
         * 
index 5ca920c65740676b8bf27a08a6effc661e97c7b7..d3de76094b9515fd931f4ed49541f03ea71e6d75 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\data\user\option\category;
 use wcf\data\DatabaseObject;
+use wcf\data\ITitledObject;
 use wcf\system\WCF;
 
 /**
@@ -19,7 +20,7 @@ use wcf\system\WCF;
  * @property-read      string          $permissions            comma separated list of user group permissions of which the active user needs to have at least one to see the user option category
  * @property-read      string          $options                comma separated list of options of which at least one needs to be enabled for the user option category to be shown
  */
-class UserOptionCategory extends DatabaseObject {
+class UserOptionCategory extends DatabaseObject implements ITitledObject {
        /**
         * Returns the title of this category.
         * 
@@ -29,6 +30,13 @@ class UserOptionCategory extends DatabaseObject {
                return $this->categoryName;
        }
        
+       /**
+        * @inheritDoc
+        */
+       public function getTitle() {
+               return WCF::getLanguage()->get('wcf.user.option.category.' . $this->categoryName);
+       }
+       
        /**
         * Returns an instance of UserOptionCategory by name.
         * 
index f9f932ffde57ba6517bb1b49f209ceeb7b828d43..8999471bec280280469e1896aaa0bfaa8a5f67c3 100644 (file)
@@ -1147,11 +1147,11 @@ Das Fehlerprotokoll enthält {$data[count]} neue Einträge. Die ersten drei, in
                <item name="wcf.acp.menu.link.article.category.add"><![CDATA[Kategorie hinzufügen]]></item>
                <item name="wcf.acp.menu.link.maintenance.sitemap"><![CDATA[Sitemaps]]></item>
                <item name="wcf.acp.menu.add"><![CDATA[Menü hinzufügen]]></item>
-               <item name="wcf.acp.menu.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} das Menü <span class="confirmationObject">{lang}{$menu->title}{/lang}</span> wirklich löschen?]]></item>
+               <item name="wcf.acp.menu.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} das Menü <span class="confirmationObject">{$menu->getTitle()}</span> wirklich löschen?]]></item>
                <item name="wcf.acp.menu.edit"><![CDATA[Menü bearbeiten]]></item>
                <item name="wcf.acp.menu.list"><![CDATA[Menüs]]></item>
                <item name="wcf.acp.menu.item.add"><![CDATA[Menüpunkt hinzufügen]]></item>
-               <item name="wcf.acp.menu.item.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} den Menüpunkt <span class="confirmationObject">{lang}{$menuItemNode->title}{/lang}</span> wirklich löschen?]]></item>
+               <item name="wcf.acp.menu.item.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} den Menüpunkt <span class="confirmationObject">{$menuItemNode->title|language}</span> wirklich löschen?]]></item>
                <item name="wcf.acp.menu.item.edit"><![CDATA[Menüpunkt bearbeiten]]></item>
                <item name="wcf.acp.menu.item.externalURL"><![CDATA[Externe URL]]></item>
                <item name="wcf.acp.menu.item.isDisabled"><![CDATA[Menüpunkt deaktivieren]]></item>
@@ -1908,14 +1908,14 @@ Die Datenbestände werden sorgfältig gepflegt, aber es ist nicht ausgeschlossen
                <item name="wcf.acp.package.validation.errorCode.2"><![CDATA[Das Paket „{$archive}“ enthält die notwendige „package.xml“ nicht.]]></item>
                <item name="wcf.acp.package.validation.errorCode.3"><![CDATA[Der Paketbezeichner „{$packageName}“ entspricht nicht den Vorgaben und ist ungültig.]]></item>
                <item name="wcf.acp.package.validation.errorCode.4"><![CDATA[Die Paketversion „{$packageVersion}“ entspricht nicht den Vorgaben und ist ungültig.]]></item>
-               <item name="wcf.acp.package.validation.errorCode.5"><![CDATA[Das Paket „{lang}{$packageName}{/lang}“ enthält keine gültigen Installations-Anweisungen.]]></item>
-               <item name="wcf.acp.package.validation.errorCode.6"><![CDATA[Das Paket „{lang}{$packageName}{/lang}“ (installierte Version: „{$packageVersion}“) soll auf Version „{$deliveredPackageVersion}“ aktualisiert werden, ein Update wird jedoch nicht unterstützt.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.5"><![CDATA[Das Paket „{$packageName|language}“ enthält keine gültigen Installations-Anweisungen.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.6"><![CDATA[Das Paket „{$packageName|language}“ (installierte Version: „{$packageVersion}“) soll auf Version „{$deliveredPackageVersion}“ aktualisiert werden, ein Update wird jedoch nicht unterstützt.]]></item>
                <item name="wcf.acp.package.validation.errorCode.7"><![CDATA[Die folgenden installierten Paketen schließen die Installation aufgrund von Inkompatibilitäten aus: <ul class="nativeList">{foreach from=$packages item=package}<li>„{$package}“ ({$package->package})</li>{/foreach}</ul>]]></item>
                <item name="wcf.acp.package.validation.errorCode.8"><![CDATA[Dieses Paket ist inkompatibel mit den folgenden, installierten Paketen: <ul class="nativeList">{foreach from=$packages item=package}<li>„{$package}“ ({$package->package})</li>{/foreach}</ul>]]></item>
                <item name="wcf.acp.package.validation.errorCode.9"><![CDATA[Die Installation erfordert das Paket „{$packageName}“ in Version „{$packageVersion}“ oder höher, das mitgelieferte Paket trägt aber die Versionsnummer „{$deliveredPackageVersion}“.]]></item>
                <item name="wcf.acp.package.validation.errorCode.10"><![CDATA[Benötigt das Paket {if $package === null}„{$packageName}“{else}„{$package}“{/if} in Version „{$packageVersion}“ oder höher, {if $package === null}dies ist aber weder installiert noch wird es mitgeliefert.{else}es ist aber nur Version „{$package->packageVersion}“ installiert.{/if}]]></item>
                <item name="wcf.acp.package.validation.errorCode.11"><![CDATA[Die {if $type == 'install'}Installations{else}Update{/if}-Anweisungen geben für das Package Installation Plugin „{$pip}“ die Datei „{$value}“ an, diese ist jedoch nicht im Archiv enthalten. Mögliche Ursachen:<ul class="nativeList"><li>Die Datei wurde dem Archiv nicht hinzugefügt</li><li>Die Datei existiert, jedoch sind der Dateiname und die Angabe in den Anweisungen abweichend (Tippfehler)</li></ul>]]></item>
-               <item name="wcf.acp.package.validation.errorCode.12"><![CDATA[Das Paket „{lang}{$packageName}{/lang}“ ist bereits in Version „{$packageVersion}“ installiert.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.12"><![CDATA[Das Paket „{$packageName|language}“ ist bereits in Version „{$packageVersion}“ installiert.]]></item>
                <item name="wcf.acp.package.validation.errorCode.13"><![CDATA[Die API-Version „{$version}“ ist ungültig.]]></item>
                <item name="wcf.acp.package.validation.errorCode.14"><![CDATA[Das Paket wurde für eine {if $isOlderVersion}ältere{else}neuere{/if} Version von WoltLab Suite entwickelt und ist nicht kompatibel.]]></item>
                <item name="wcf.acp.package.validation.errorCode.15"><![CDATA[Das Paket verfügt über keine Angaben zur API-Kompatibilität, eine Installation  mit aktivierten Entwickler-Werkzeugen ist daher nicht möglich.]]></item>
@@ -3021,14 +3021,14 @@ Wenn {if LANGUAGE_USE_INFORMAL_VARIANT}du{else}Sie{/if} unter „Konfiguration 
                <item name="wcf.acp.user.option.access"><![CDATA[Zugriff]]></item>
                <item name="wcf.acp.user.option.add"><![CDATA[Benutzerprofilfeld hinzufügen]]></item>
                <item name="wcf.acp.user.option.category.add"><![CDATA[Benutzerprofilfeld-Kategorie hinzufügen]]></item>
-               <item name="wcf.acp.user.option.category.delete.sure"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} die Benutzerprofilfeld-Kategorie <span class="confirmationObject">{lang}wcf.user.option.category.{$category->categoryName}{/lang}</span> wirklich löschen?]]></item>
+               <item name="wcf.acp.user.option.category.delete.sure"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} die Benutzerprofilfeld-Kategorie <span class="confirmationObject">{$category->getTitle()}</span> wirklich löschen?]]></item>
                <item name="wcf.acp.user.option.category.edit"><![CDATA[Benutzerprofilfeld-Kategorie bearbeiten]]></item>
                <item name="wcf.acp.user.option.category.options"><![CDATA[Felder]]></item>
                <item name="wcf.acp.user.option.category.list"><![CDATA[Benutzerprofilfeld-Kategorien]]></item>
                <item name="wcf.acp.user.option.categoryName"><![CDATA[Kategorie]]></item>
                <item name="wcf.acp.user.option.defaultValue"><![CDATA[Standardwert]]></item>
                <item name="wcf.acp.user.option.defaultValue.description"><![CDATA[Wert, der beim erstmaligen Ausfüllen als Standard vorgegeben ist.]]></item>
-               <item name="wcf.acp.user.option.delete.sure"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} das Benutzerprofilfeld <span class="confirmationObject">{lang}wcf.user.option.{$option->optionName}{/lang}</span> wirklich löschen?]]></item>
+               <item name="wcf.acp.user.option.delete.sure"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} das Benutzerprofilfeld <span class="confirmationObject">{$option->getTitle()}</span> wirklich löschen?]]></item>
                <item name="wcf.acp.user.option.description"><![CDATA[Beschreibung]]></item>
                <item name="wcf.acp.user.option.edit"><![CDATA[Benutzerprofilfeld bearbeiten]]></item>
                <item name="wcf.acp.user.option.editable"><![CDATA[Wer darf den Inhalt verändern?]]></item>
@@ -5163,9 +5163,9 @@ Benachrichtigungen auf <a href="{link isEmail=true}{/link}">{PAGE_TITLE|language
                <item name="wcf.user.option.canWriteProfileComments"><![CDATA[Kann Pinnwand-Kommentare schreiben]]></item>
                <item name="wcf.user.option.editorPastePreserveFormatting"><![CDATA[Text-Formatierung beim Einfügen in den Editor übernehmen]]></item>
                <item name="wcf.user.option.editorPastePreserveFormatting.description"><![CDATA[Die Deaktivierung dieser Option erzwingt das Einfügen aus der Zwischenablage in reiner Textform, Formatierungen werden dabei entfernt.]]></item>
-               <item name="wcf.user.option.searchRadioButtonOption"><![CDATA[Auswahl des Benutzers bei „{lang}wcf.user.option.{$option->optionName}{/lang}“:]]></item>
-               <item name="wcf.user.option.searchTextOption"><![CDATA[„{lang}wcf.user.option.{$option->optionName}{/lang}“ enthält:]]></item>
-               <item name="wcf.user.option.searchBooleanOption"><![CDATA[Auswahl des Benutzers bei „{lang}wcf.user.option.{$option->optionName}{/lang}“:]]></item>
+               <item name="wcf.user.option.searchRadioButtonOption"><![CDATA[Auswahl des Benutzers bei „{$option->getTitle()}“:]]></item>
+               <item name="wcf.user.option.searchTextOption"><![CDATA[„{$option->getTitle()}“ enthält:]]></item>
+               <item name="wcf.user.option.searchBooleanOption"><![CDATA[Auswahl des Benutzers bei „{$option->getTitle()}“:]]></item>
        </category>
        <category name="wcf.user.mail">
                <item name="wcf.user.mail.information"><![CDATA[Informationen]]></item>
index a8608438e484be04c7bc0f7953029dc3d4655276..e5040b1882f85473da35cc67c407405b83a9c013 100644 (file)
@@ -1124,11 +1124,11 @@ This protocol file contains {$data[count]} new entries. The first three error me
                <item name="wcf.acp.menu.link.article.category.add"><![CDATA[Add Category]]></item>
                <item name="wcf.acp.menu.link.maintenance.sitemap"><![CDATA[Sitemaps]]></item>
                <item name="wcf.acp.menu.add"><![CDATA[Add Menu]]></item>
-               <item name="wcf.acp.menu.delete.confirmMessage"><![CDATA[Do you really want to delete the menu <span class="confirmationObject">{lang}{$menu->title}{/lang}</span>?]]></item>
+               <item name="wcf.acp.menu.delete.confirmMessage"><![CDATA[Do you really want to delete the menu <span class="confirmationObject">{$menu->getTitle()}</span>?]]></item>
                <item name="wcf.acp.menu.edit"><![CDATA[Edit Menu]]></item>
                <item name="wcf.acp.menu.list"><![CDATA[Menus]]></item>
                <item name="wcf.acp.menu.item.add"><![CDATA[Add Menu Item]]></item>
-               <item name="wcf.acp.menu.item.delete.confirmMessage"><![CDATA[Do you really want to delete the menu item <span class="confirmationObject">{lang}{$menuItemNode->title}{/lang}</span>?]]></item>
+               <item name="wcf.acp.menu.item.delete.confirmMessage"><![CDATA[Do you really want to delete the menu item <span class="confirmationObject">{$menuItemNode->title|language}</span>?]]></item>
                <item name="wcf.acp.menu.item.edit"><![CDATA[Edit Menu Item]]></item>
                <item name="wcf.acp.menu.item.externalURL"><![CDATA[External URL]]></item>
                <item name="wcf.acp.menu.item.isDisabled"><![CDATA[Disable menu item]]></item>
@@ -1893,14 +1893,14 @@ The database is carefully maintained, but there will be always be a margin of er
                <item name="wcf.acp.package.validation.errorCode.2"><![CDATA[The package “{$archive}” is missing the required “package.xml” file.]]></item>
                <item name="wcf.acp.package.validation.errorCode.3"><![CDATA[The package name “{$packageName}” does not meet the expectations and was rejected.]]></item>
                <item name="wcf.acp.package.validation.errorCode.4"><![CDATA[The package version “{$packageVersion}” does not meet the expectations and was rejected.]]></item>
-               <item name="wcf.acp.package.validation.errorCode.5"><![CDATA[The package “{lang}{$packageName}{/lang}” does not contain valid install instructions.]]></item>
-               <item name="wcf.acp.package.validation.errorCode.6"><![CDATA[The package “{lang}{$packageName}{/lang}” (installed version: “{$packageVersion}”) should be updated to version “{$deliveredPackageVersion}”, but an update is not supported.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.5"><![CDATA[The package “{$packageName|language}” does not contain valid install instructions.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.6"><![CDATA[The package “{$packageName|language}” (installed version: “{$packageVersion}”) should be updated to version “{$deliveredPackageVersion}”, but an update is not supported.]]></item>
                <item name="wcf.acp.package.validation.errorCode.7"><![CDATA[The following installed packages exclude the current package due to known incompatibilities: <ul class="nativeList">{foreach from=$packages item=package}<li>“{$package}” ({$package->package})</li>{/foreach}</ul>]]></item>
                <item name="wcf.acp.package.validation.errorCode.8"><![CDATA[This package is incompatible with the following installed packages: <ul class="nativeList">{foreach from=$packages item=package}<li>“{$package}” ({$package->package})</li>{/foreach}</ul>]]></item>
                <item name="wcf.acp.package.validation.errorCode.9"><![CDATA[The installation requires the package “{$packageName}” in version “{$packageVersion}” or higher, but only version “{$deliveredPackageVersion}” is shipped.]]></item>
                <item name="wcf.acp.package.validation.errorCode.10"><![CDATA[Requires the package {if $package === null}“{$packageName}”{else}“{$package}”{/if} in version “{$packageVersion}” or higher, {if $package === null}but it is neither installed nor shipped.{else}but only version “{$package->packageVersion}” is installed.{/if}]]></item>
                <item name="wcf.acp.package.validation.errorCode.11"><![CDATA[The {if $type == 'install'}install{else}update{/if}-instructions specify the file “{$value}” for the Package Installation Plugin “{$pip}”, but it cannot be found in the specified location. Possible causes:<ul class="nativeList"><li>The file has not been added to the archive at all</li><li>The file exists but under a (slightly) different name (typo)</li></ul>]]></item>
-               <item name="wcf.acp.package.validation.errorCode.12"><![CDATA[The package “{lang}{$packageName}{/lang}” is already installed in version “{$packageVersion}”.]]></item>
+               <item name="wcf.acp.package.validation.errorCode.12"><![CDATA[The package “{$packageName|language}” is already installed in version “{$packageVersion}”.]]></item>
                <item name="wcf.acp.package.validation.errorCode.13"><![CDATA[The API version “{$version}” is invalid.]]></item>
                <item name="wcf.acp.package.validation.errorCode.14"><![CDATA[This package was created for {if $isOlderVersion}an older{else}a newer{/if} version of WoltLab Suite and is not compatible.]]></item>
                <item name="wcf.acp.package.validation.errorCode.15"><![CDATA[This package does not contain any data on API compatibility, the installation is prevented while the developer tools are enabled.]]></item>
@@ -2949,14 +2949,14 @@ You can define the default sender in “Configuration » Options » General » E
                <item name="wcf.acp.user.option.access"><![CDATA[Access]]></item>
                <item name="wcf.acp.user.option.add"><![CDATA[Add Custom User Field]]></item>
                <item name="wcf.acp.user.option.category.add"><![CDATA[Add Custom User Field Category]]></item>
-               <item name="wcf.acp.user.option.category.delete.sure"><![CDATA[Do you really want to delete the category <span class="confirmationObject">{lang}wcf.user.option.category.{$category->categoryName}{/lang}</span>?]]></item>
+               <item name="wcf.acp.user.option.category.delete.sure"><![CDATA[Do you really want to delete the category <span class="confirmationObject">{$category->getTitle()}</span>?]]></item>
                <item name="wcf.acp.user.option.category.edit"><![CDATA[Edit Custom User Field Category]]></item>
                <item name="wcf.acp.user.option.category.options"><![CDATA[Fields]]></item>
                <item name="wcf.acp.user.option.category.list"><![CDATA[Custom User Field Categories]]></item>
                <item name="wcf.acp.user.option.categoryName"><![CDATA[Category]]></item>
                <item name="wcf.acp.user.option.defaultValue"><![CDATA[Default Value]]></item>
                <item name="wcf.acp.user.option.defaultValue.description"><![CDATA[Default option value suggested on first edit.]]></item>
-               <item name="wcf.acp.user.option.delete.sure"><![CDATA[Do you really want to delete the field <span class="confirmationObject">{lang}wcf.user.option.{$option->optionName}{/lang}</span>?]]></item>
+               <item name="wcf.acp.user.option.delete.sure"><![CDATA[Do you really want to delete the field <span class="confirmationObject">{$option->getTitle()}</span>?]]></item>
                <item name="wcf.acp.user.option.description"><![CDATA[Description]]></item>
                <item name="wcf.acp.user.option.edit"><![CDATA[Edit Custom User Field]]></item>
                <item name="wcf.acp.user.option.editable"><![CDATA[Editable by]]></item>
@@ -5162,9 +5162,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>
-               <item name="wcf.user.option.searchBooleanOption"><![CDATA[User’s selection for “{lang}wcf.user.option.{$option->optionName}{/lang}”:]]></item>
+               <item name="wcf.user.option.searchRadioButtonOption"><![CDATA[User’s selection for “{$option->getTitle()}”:]]></item>
+               <item name="wcf.user.option.searchTextOption"><![CDATA[“{$option->getTitle()}” contains:]]></item>
+               <item name="wcf.user.option.searchBooleanOption"><![CDATA[User’s selection for “{$option->getTitle()}”:]]></item>
        </category>
        <category name="wcf.user.mail">
                <item name="wcf.user.mail.information"><![CDATA[Details]]></item>