# Use custom language code (URL, lang and hreflang attribute)

Here, we explain how to change the default language code. This is useful if you don't like the default 2 letters code of Weglot in the URL and want to change it into another language code.

### Example: Changing "tw" to "zh-HK"

In this post, we show for example how to change language code tw (Traditional Chinese) to zh-HK (Hong Kong Chinese).

```markup
<!-- HTML output by default (Traditional Chinese) -->
<html lang="tw">
    <head>
        <link rel="alternate" hreflang="en" href="https://mysite.com/"/>
        <link rel="alternate" hreflang="tw" href="https://mysite.com/tw/"/>
    </head>
    <body>
        <!-- ... -->
    </body>
</html>

<!-- HTML output with custom language code (Hong Kong Chinese) -->
<html lang="zh-HK">
    <head>
        <link rel="alternate" hreflang="en" href="https://mysite.com/"/>
        <link rel="alternate" hreflang="zh-HK" href="https://mysite.com/zh-HK/"/>
    </head>
    <body>
        <!-- ... -->
    </body>
</html>

<!-- HTML output with custom language code (Hong Kong Chinese) but keep it to tw on hreflangs-->
<html lang="zh-HK">
    <head>
        <link rel="alternate" hreflang="en" href="https://mysite.com/"/>
        <link rel="alternate" hreflang="tw" href="https://mysite.com/zh-HK/"/>
    </head>
    <body>
        <!-- ... -->
    </body>
</html>
```

### Hook for customize language code &#x20;

This hook must be load before your theme. This is why you can not use it in your `functions.php`. To use it, you can follow one of the 2 method below.&#x20;

```php
// Use zh-HK (Hong Kong Chinese) instead tw (Traditional Chinese)
add_filter( 'weglot_language_code_replace', 'custom_weglot_language_code_replace' );
function custom_weglot_language_code_replace( $replacements ) { 
    $replacements['tw'] = 'zh-HK';
    return $replacements;
}

// Use tw instead of zh-HK on hreflangs (optional)
add_filter( 'weglot_href_lang', 'custom_weglot_href_lang' );
function custom_weglot_href_lang( $render ) {
	$render = str_replace("hreflang=\"zh-HK\"", "hreflang=\"tw\"", $render);
	return $render;
}
```

### Update for autoredirection option

If you've activate the autoredirection option, you should be use this other filter to add your custom code into the navigator language list

```
add_filter( 'weglot_navigator_language', 'custom_weglot_navigator_language' );
function custom_weglot_navigator_language( $navigator_languages ) {
	$navigator_languages = array();
	if ( isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) { //phpcs:ignore
		$navigator_languages = explode( ',', trim( sanitize_text_field( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) );
		foreach ( $navigator_languages as &$navigator_language ) {
			if ( strpos( $navigator_language, ';' ) !== false ) {
				$navigator_language = substr( $navigator_language, 0, strpos( $navigator_language, ';' ) );
			}
			$navigator_language = strtolower( $navigator_language );
			$navigator_language = str_replace('tw', 'zh-HK', $navigator_language);
		}
	}

	return $navigator_languages;
}
```

### Method 1: Use plugin Code Snippets

1. Add and activate Code Snippets plugin on your WordPress: <https://wordpress.org/plugins/code-snippets/>
2. In your WordPress back office, go to Snippets -> Add new
3. Add a title (example: `Weglot - Custom language code`)
4. Add the following code into the code input. Don't copy `<?php` cause it's already added by the plugin.
5. Save changes

### Method 2: Create a MU-PLUGIN

1. Create a new file : `/wp-content/mu-plugins/weglot-language-code-replace.php`
2. Add the following code into the new file and save it.
