# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.weglot.com/wordpress/use-cases/use-custom-language-code-url-lang-and-hreflang-attribute.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
