HTML is not supported in message and may confuse translators or introduce content encoding issues or even security hazards.

If you're outputting these messages correctly (processed as text and not literal html), then these will end up double escaped and thus not producing an actual link but the literal text `<a href`.

In this case it's probably best to separate the label from the description and instead produce a label separately. That will also reduce duplication efforts for translators.

```php
// 	'crossredirs' => 'Cross-namespace redirects',
//	'crossredirs-desc' => 'A list of mainspace to userspace redirects on an arbitrary Wikimedia wiki.',
$label = '<a href="' . htmlspecialchars( $url ) . '">' . _html('crossredirs') . '</a>';
$listItem = '<li>' . $label . _g( 'colon-separator' ) . ' ' . _html('crossredirs-desc') . '</li>';

// Alternative
$listItem = '<li><a href="./crossredirs/">' . htmlspecialchars( $I18N->msg( 'crossredirs' ) )
     . '</a>: ' . htmlspecialchars( $I18N->msg( 'crossredirs-desc' ) ) . '</li>';
```

Or even combine it still, but have `$1` place hold it for you if you prefer that:
```php
// 	'crossredirs' => 'Cross-namespace redirects',
//	'crossredirs-desc' => '$1: A list of mainspace to userspace redirects on an arbitrary Wikimedia wiki.',
$label = '<a href="./crossredirs/">' . $I18N->msg( 'crossredirs', array( 'escape' => 'html' ) . '</a>';
$listItem = '<li>' . $I18N->msg( 'crossredirs-desc', array(
         'escape' => 'html',
         'variables' => array( $label )
    ) ) . '</li>';
```