public function normalize(
        UserAttribute $userAttribute,
        UserAttributeValue $userAttributeValue = null
    ) {
        // original value
        if ($userAttributeValue) {
            $originalAttributeValue = $userAttributeValue->getValue();
        } else {
            $originalAttributeValue = null;
        }

        // prepare value
        $value = [];

        // value for view
        $value['view'] = $originalAttributeValue;
        if ($originalAttributeValue) {

            // translate value
            if ($userAttribute->isTranslateable()) {
                $value['view'] = $this->translator->trans($value['view']);
            }

            // format value
            $printFormat = $userAttribute->getPrintFormat();
            if ($printFormat) {
                $value['view'] = $this->renderValue(
                    $printFormat,
                    [
                        'value' => $value['view'],
                    ]
                );
            }
        }

        // value for edit
        $value['edit'] = $originalAttributeValue;

        // common attribute keys
        $normalizedAttributes = [
            'name' => $userAttribute->getName(),
            'label' => $this->translator->trans($userAttribute->getName()),
            'description' => $this->translator->trans($userAttribute->getDescription()),
            'type' => $userAttribute->getType(),
            'value' => $value,
        ];

        return $normalizedAttributes;
    }