diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
index 08067dec28a111eb8a17a040bf3895b6b3324feb..56c07beb5430c6fa55f07d9ef8ffcd5c007a4476 100644
--- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
+++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php
@@ -2256,10 +2256,10 @@ class DatabaseRecordList
             }
             // Determine, if checkbox should be checked
             if (in_array($fieldName, $setFields, true) || $fieldName === $GLOBALS['TCA'][$table]['ctrl']['label']) {
-                $checked = ' checked="checked"';
+                $checked = true;
             } else {
                 $checkAllChecked = false;
-                $checked = '';
+                $checked = false;
             }
 
             // Field label
@@ -2278,35 +2278,22 @@ class DatabaseRecordList
             }
 
             $fieldLabel = $fieldLabel ?: BackendUtility::getItemLabel($table, $fieldName);
-
-            $checkboxes[] = '<tr><td class="col-checkbox"><input type="checkbox" id="check-' . $fieldName . '" name="displayFields['
-                . $table . '][]" value="' . $fieldName . '" ' . $checked
-                . ($fieldName === $GLOBALS['TCA'][$table]['ctrl']['label'] ? ' disabled="disabled"' : '') . '></td><td class="col-title">'
-                . '<label class="label-block" for="check-' . $fieldName . '">' . htmlspecialchars($lang->sL($fieldLabel)) . ' <span class="text-muted text-monospace">[' . htmlspecialchars($fieldName) . ']</span></label></td></tr>';
-        }
-        // Table with the field selector::
-        return '
-            <div class="fieldSelectBox">
-            <form action="' . htmlspecialchars($this->listURL()) . '" method="post" name="fieldSelectBox">
-			<input type="hidden" name="displayFields[' . $table . '][]" value="">
-			<div class="table-fit table-scrollable">
-				<table border="0" cellpadding="0" cellspacing="0" class="table table-transparent table-hover">
-					<thead>
-						<tr>
-							<th class="col-checkbox checkbox" colspan="2">
-								<label><input type="checkbox" class="checkbox checkAll" ' . ($checkAllChecked ? ' checked="checked"' : '') . '>
-								' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleall')) . '</label>
-							</th>
-						</tr>
-					</thead>
-					<tbody>
-					' . implode('', $checkboxes) . '
-					</tbody>
-				</table>
-			</div>
-			<input type="submit" name="search" class="btn btn-default" value="'
-            . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.setFields')) . '"/>
-            </form></div>';
+            $checkboxes[] = [
+                'fieldName' => $fieldName,
+                'checked' => $checked,
+                'disabled' => ($fieldName === $GLOBALS['TCA'][$table]['ctrl']['label']),
+                'fieldLabel' => $fieldLabel
+            ];
+        }
+        // Table with the field selector
+        return $this->getFluidTemplateObject('FieldSelectBox.html')
+            ->assignMultiple([
+                'formUrl' => $this->listURL(),
+                'table' => $table,
+                'allChecked' => $checkAllChecked,
+                'checkboxes' => $checkboxes
+            ])
+            ->render();
     }
 
     /*********************************
diff --git a/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html b/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html
new file mode 100644
index 0000000000000000000000000000000000000000..04115ba2bcd84a3168751eccc8b04315a6c3a754
--- /dev/null
+++ b/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html
@@ -0,0 +1,44 @@
+<div class="fieldSelectBox">
+    <form action="{formUrl}" method="post" name="fieldSelectBox">
+        <input type="hidden" name="displayFields[{table}][]" value="">
+        <div class="table-fit table-scrollable">
+            <table border="0" cellpadding="0" cellspacing="0" class="table table-transparent table-hover">
+                <thead>
+                <tr>
+                    <th class="col-checkbox checkbox" colspan="2">
+                        <label>
+                            <input type="checkbox" class="checkbox checkAll" {f:if(condition:'{allChecked}', then: ' checked="checked"')} />
+                            <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleall" />
+                        </label>
+                    </th>
+                </tr>
+                </thead>
+                <tbody>
+                    <f:for each="{checkboxes}" as="checkbox">
+                        <tr>
+                            <td class="col-checkbox">
+                                <input
+                                        type="checkbox"
+                                        id="check-{checkbox.fieldName}"
+                                        name="displayFields[{table}][]"
+                                        value="{checkbox.fieldName}"
+                                        {f:if(condition:'{checkbox.checked}', then:' checked')}
+                                        {f:if(condition:'{checkbox.disabled}', then: 'disabled')}
+                                />
+                            </td>
+                            <td class="col-title">
+                                <label class="label-block" for="check-{checkbox.fieldName}">
+                                    <f:if condition="{checkbox.fieldLabel}">
+                                        <f:translate key="{checkbox.fieldLabel}">{checkbox.fieldLabel}</f:translate>
+                                    </f:if>
+                                    <span class="text-muted text-monospace">[{checkbox.fieldName}]</span>
+                                </label>
+                            </td>
+                        </tr>
+                    </f:for>
+                </tbody>
+            </table>
+        </div>
+        <input type="submit" name="search" class="btn btn-default" value="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.setFields')}" />
+    </form>
+</div>