40FINGERS Demo Skin

Page skin: 40f skin demo dnn-core-theme-objects // 14.00-language.ascx

Language DNN Theme Object

Generated Skin File: No Theme Created

The skin object will show you the language in which the current page is available.
It supports 2 display modes: dropdown menu and template based repeater (you can even use both at the same time). Apart from that, there is a common header and a common footer available (both templatable).

All templates of the skinobject use the DNN core TokenReplace functionality as template engine. This means that you can control visible appearance of the language skin object to a great extent.

Current Version 01.00.00

Include Language in a Theme

ASCX

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:Language runat="server" id="dnnLanguage" ShowMenu="False" ShowLinks="True" />

HTML Token

[LANGUAGE]

HTML Object Token

<object id="dnnLANGUAGE" codetype="dotnetnuke/server" codebase="LANGUAGE" />

Attributes

Attribute Description Default Possible Values DNN Version
CssClass Used to style the
language dropdown list
SkinObject String 01.00.00
ShowMenu Display the dropdown menu True Boolean 01.00.00
ShowLinks Display the language links
repeater
False Boolean 01.00.00
CommonHeaderTemplate Template used as common header HTML String 01.00.00
HeaderTemplate Template for header HTML String 01.00.00
ItemTemplate Template for item HTML String 01.00.00
AlternateTemplate Template for alternate item HTML String 01.00.00
SelectedItemTemplate Template for Selected item HTML String 01.00.00
SeparatorTemplate Template for separator item HTML String 01.00.00
FooterTemplate Template for footer item HTML String 01.00.00
CommonFooterTemplate Template for common footer item HTML String 01.00.00

Tokens

**

"Core Token Replace" You can use all the DNN core tokens in these templates
[CULTURE:DISPLAYNAME] Gets the culture name in the format " ()" in the language of the localized version of .NET Framework.
[CULTURE:ENGLISHNAME] Gets the culture name in the format " ()" in English.
[CULTURE:LCID] Gets the culture identifier for the current CultureInfo
[CULTURE:NAME] Gets the culture name in the format "- ".
[CULTURE:NATIVENAME] Gets the culture name, consisting of the language, the country/region, and the optional script, that the culture is set to display.
[CULTURE:TWOLETTERISOCODE] Gets the ISO 639-2 three-letter code for the language of the current CultureInfo
[CULTURE:THREELETTERISOCODE] Gets the ISO 639-1 two-letter code for the language of the current CultureInfo
[URL] This will generate the correct URL for the current page in a specific culture
[SELECTED] Returns “True” if a specific culture is the current culture.
[LABEL] Inserts the Label text from the resource file.
[I] Returns the directory that holds the core country flag images (/images/Flags)
[P] Returns the portal directory
[S] Returns the directory of the current skin
[G] Returns the global (host) skin folder

Examples

Default

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:LANGUAGE runat="server" ID="lang01" ShowMenu="False" ShowLinks="True" />

Only Dropdown

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:LANGUAGE runat="server" ID="lang02" ShowMenu="True" ShowLinks="False" />

Dropdown + Flag

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:LANGUAGE runat="server" ID="lang03" ShowLinks="False" ShowMenu="True" CommonFooterTemplate=' <img src="[I][FLAGSRC]" alt="[CULTURE:NATIVENAME]" border="0" />' />

Displays text links for languages.

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:LANGUAGE runat="server" ID="lang04" ShowLinks="True" ShowMenu="False" ItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' AlternateTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' selectedItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' />

Displays Flags in Unordered list.

<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>
<dnn:LANGUAGE runat="server" ID="lang05" ShowLinks="True" ShowMenu="False" HeaderTemplate='<ul class="language-ul-flags">' ItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' AlternateTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' SelectedItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a><span class="lang-menu-toggle" id="lang-menu-toggle"></span></li>' FooterTemplate='</ul>' /> <script> const langToggle = document.getElementById("lang-menu-toggle"); langToggle.addEventListener("click", (event) => { langToggle.parentElement.parentElement.classList.toggle('lang-list-opened'); }); </script>

Markdown

---
uid: language  
locale: en  
title: Language Theme object  
dnnversion: 09.02.00  
previous-topic: jsexclude  
next-topic: login sko  
related-topics: theme-objects,themes,create-theme  
links:  
---

# Language Theme Object Introduction  

The skin object will show you the language in which the current page is available. 
It supports 2 display modes: dropdown menu and template based repeater (you can even use both at the same time). Apart from that, there is a common header and a common footer available (both templatable). 
 
All templates of the skinobject use the DNN core TokenReplace functionality as template engine. This means that you can control visible appearance of the language skin object to a great extent. 


**Current Version:** 01.00.00  


## Include in Theme

### ASCX
``` html
<%@ Register TagPrefix="dnn" TagName="LANGUAGE" Src="~/Admin/Skins/Language.ascx" %>  
<dnn:Language runat="server" id="dnnLanguage" ShowMenu="False" ShowLinks="True" />
```

### HTML Token
[LANGUAGE]

### HTML Object Token
``` html
<object id="dnnLANGUAGE" codetype="dotnetnuke/server" codebase="LANGUAGE" />
```

| Attribute | Description | Default | Posssible Values | DNN Version |
| --- | --- | --- | --- | --- |
| CssClass | Used to style the<br/>language dropdown list | SkinObject | String | 01.00.00 |
| ShowMenu | Display the dropdown menu  | True | Boolean | 01.00.00 |
| ShowLinks | Display the language links<br/>repeater | False | Boolean | 01.00.00 |
| CommonHeaderTemplate | Template used as common header |  | HTML String | 01.00.00 |
| HeaderTemplate | Template for header |  | HTML String | 01.00.00 |
| ItemTemplate | Template for item  |  | HTML String | 01.00.00 |
| AlternateTemplate  | Template for alternate item |  | HTML String | 01.00.00 |
| SelectedItemTemplate | Template for Selected item |  | HTML String | 01.00.00 |
| SeparatorTemplate  | Template for separator item |  | HTML String | 01.00.00 |
| FooterTemplate | Template for footer item |  | HTML String | 01.00.00 |
| CommonFooterTemplate | Template for common footer item |  | HTML String | 01.00.00 |

##  Tokens


| Name | Value | Description | 
| --- | --- | --- | 
| "Core Token Replace" |  |  |
| [CULTURE:DISPLAYNAME] |  |  |
| [CULTURE:ENGLISHNAME] |  |  |
| [CULTURE:LCID] |  |  |
| [CULTURE:NAME]  |  |  |
| [CULTURE:NATIVENAME] |  |  |
| [CULTURE:TWOLETTERISOCODE]  |  |  |
| [CULTURE:THREELETTERISOCODE]  |  |  |
| [URL] |  |  |
| [SELECTED] |  |  |
| [LABEL]  |  |  |
| [I]  |  |  |
| [P] |  |  |
| [S]  |  |  |
| [G] |  |  |


## Examples:

### Default
Default configuration

~~~html
<dnn:LANGUAGE runat="server" ID="lang01" ShowMenu="False" ShowLinks="True" />
~~~


### Only Dropdown
~~~html
<dnn:LANGUAGE runat="server" ID="lang02" ShowMenu="True" ShowLinks="False" />
~~~


### Dropdown + Flag
Displays dropdownlist and flag of currently selected language

~~~html
<dnn:LANGUAGE runat="server" ID="lang03" ShowLinks="False"
ShowMenu="True" CommonFooterTemplate=' <img src="[I][FLAGSRC]"
alt="[CULTURE:NATIVENAME]" border="0" />' />
~~~


### Displays text links for languages.

Selected language has different a Classname ~~~html <dnn:LANGUAGE runat="server" ID="lang04" ShowLinks="True" ShowMenu="False" ItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' AlternateTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' selectedItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' /> ~~~ ### Displays Flags in Unordered list. Example of a fully custom dropdown.
Please note that this uses some extra CSS and Javascript. ~~~html <dnn:LANGUAGE runat="server" ID="lang05" ShowLinks="True" ShowMenu="False" HeaderTemplate='<ul class="language-ul-flags">' ItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' AlternateTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' SelectedItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a><span class="lang-menu-toggle" id="lang-menu-toggle"></span></li>' FooterTemplate='</ul>' /> <script> const langToggle = document.getElementById("lang-menu-toggle"); langToggle.addEventListener("click", (event) => { langToggle.parentElement.parentElement.classList.toggle('lang-list-opened'); }); </script> ~~~

Skin Object Examples

Default

Default configuration

<dnn:LANGUAGE runat="server" ID="lang01" ShowMenu="False" ShowLinks="True" />
en-USde-DEfr-FRnl-NL

Only Dropdown

<dnn:LANGUAGE runat="server" ID="lang02" ShowMenu="True" ShowLinks="False" />

Dropdown + Flag

Displays dropdownlist and flag of currently selected language

<dnn:LANGUAGE runat="server" ID="lang03" ShowLinks="False" ShowMenu="True" CommonFooterTemplate=' <img src="[I][FLAGSRC]" alt="[CULTURE:NATIVENAME]" border="0" />' />
English (United States)

Displays text links for languages.


Selected language has different a Classname

<dnn:LANGUAGE runat="server" ID="lang04" ShowLinks="True" ShowMenu="False" ItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' AlternateTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' selectedItemTemplate='<a href="[URL]" class="Language" title="[CULTURE:NATIVENAME]" ><span class="Language[SELECTED]">[CULTURE:NAME]</span></a>' />

Displays Flags in Unordered list.

Example of a fully custom dropdown.
Please note that this uses some extra CSS and Javascript.

<dnn:LANGUAGE runat="server" ID="lang05" ShowLinks="True" ShowMenu="False" HeaderTemplate='<ul class="language-ul-flags">' ItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' AlternateTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a></li>' SelectedItemTemplate='<li class="lang-item lang-item-sel-[SELECTED]"><a href="[URL]" class="lang-link" title="[CULTURE:NATIVENAME]" ><img src="[I][FLAGSRC] " title="[CULTURE:NATIVENAME]" /></a><span class="lang-menu-toggle" id="lang-menu-toggle"></span></li>' FooterTemplate='</ul>' /> <script> const langToggle = document.getElementById("lang-menu-toggle"); langToggle.addEventListener("click", (event) => { langToggle.parentElement.parentElement.classList.toggle('lang-list-opened'); }); </script>