Template:Localized link

From Resistance in Belgium


{{#ifeq:|

 |

}}[[Special:MyLanguage/{{{1}}}|{{#if: |{{{2}}} |{{#ifexist:Translations:{{#if:|:}}/Page display title/en

 |{{#ifexpr:{{#if:|1|0}} and !=0
   |{{#ifeq:en|en
     |
     |{{#if:
        |{{#ifeq:Script error: No such module "string".|0
          |
          | Script error: No such module "string".
        }}
        |{{#if:{{ Template:TNTN | nsp = 0 }}
          |{{ Template:TNTN | nsp = 0 }}
          |{{{1}}}
       }}
     }}
   }}
   |{{ Template:TNTN }}
 }}
 |{{#if:
   |{{#if:
     |
     |{{{1}}}
   }}
   |{{{1}}}
 }}

}}}}]]{{#ifeq:|

 |

}}[[:{{{1}}}| ]] Lua error: Module:TNT:172: '''Missing JsonConfig extension, or not properly configured; Cannot load https://commons.wikimedia.org/wiki/Data:I18n/Documentation.tab. See https://www.mediawiki.org/wiki/Extension:JsonConfig#Supporting_Wikimedia_templates'''.{{#if:Template:Tsh Template:High-use

Purpose

This helper template can be used to link to translatable pages in the user's language. It uses the special page prefix Special:MyLanguage/, which checks if there is a translated version of a page in the user's language, and links to it if there is one, and links to a fallback language where available, or the default wiki language version (English in MediaWiki) if there isn't.

It should be used in translated pages, so that they link to the right page even if there is no translated page in that language.

Usage

Template:Localized link/doc

If the "nsp" parameter is not defined, as link text this displays the full pagename (including the namespace); otherwise — if the "nsp" parameter is defined to any value the link text displays the short pagename (without the namespace).

Examples of simple usage

Template:(| class="wikitable" |- ! Use ! Becomes |- | Template:Tlx | {{#ifeq:Communication|

 |

}}[[Special:MyLanguage/Communication|{{#if: |{{{2}}} |{{#ifexist:Translations:{{#if:|:}}Communication/Page display title/en

 |{{#ifexpr:{{#if:|1|0}} and 0!=0
   |{{#ifeq:en|en
     |Communication
     |{{#if:
        |{{#ifeq:Script error: No such module "string".|0
          |
          | Script error: No such module "string".
        }}
        |{{#if:{{ Template:TNTN | nsp = 0 }}
          |{{ Template:TNTN | nsp = 0 }}
          |Communication
       }}
     }}
   }}
   |{{ Template:TNTN }}
 }}
 |{{#if:
   |{{#if:Communication
     |Communication
     |Communication
   }}
   |Communication
 }}

}}}}]]{{#ifeq:Communication|

 |

}} |- | Template:Tlx | {{#ifeq:Communication|

 |

}}{{#if:コミュニケーション |コミュニケーション |コミュニケーション}}{{#ifeq:Communication|

 |

}} |- | Template:Tlx | {{#ifeq:Project:About|

 |

}}[[Special:MyLanguage/Project:About|{{#if: |{{{2}}} |{{#ifexist:Translations:{{#if:Project|Project:}}About/Page display title/en

 |{{#ifexpr:{{#if:|1|0}} and 4!=0
   |{{#ifeq:en|en
     |About
     |{{#if:
        |{{#ifeq:Script error: No such module "string".|0
          |
          | Script error: No such module "string".
        }}
        |{{#if:{{ Template:TNTN | nsp = 0 }}
          |{{ Template:TNTN | nsp = 0 }}
          |Project:About
       }}
     }}
   }}
   |{{ Template:TNTN }}
 }}
 |{{#if:
   |{{#if:About
     |About
     |Project:About
   }}
   |Project:About
 }}

}}}}]]{{#ifeq:Project:About|

 |

}} |- | Template:Tlx | {{#ifeq:Project:About|

 |

}}[[Special:MyLanguage/Project:About|{{#if: |{{{2}}} |{{#ifexist:Translations:{{#if:Project|Project:}}About/Page display title/en

 |{{#ifexpr:{{#if:0|1|0}} and 4!=0
   |{{#ifeq:en|en
     |About
     |{{#if:
        |{{#ifeq:Script error: No such module "string".|0
          |
          | Script error: No such module "string".
        }}
        |{{#if:{{ Template:TNTN | nsp = 0 }}
          |{{ Template:TNTN | nsp = 0 }}
          |Project:About
       }}
     }}
   }}
   |{{ Template:TNTN }}
 }}
 |{{#if:0
   |{{#if:About
     |About
     |Project:About
   }}
   |Project:About
 }}

}}}}]]{{#ifeq:Project:About|

 |

}} |Template:)

Usage in translatable pages

On pages prepared for translation with the {{#ifeq:Extension:Translate|

 |

}}[[Special:MyLanguage/Extension:Translate|{{#if: |{{{2}}} |{{#ifexist:Translations:{{#if:|:}}Extension:Translate/Page display title/en

 |{{#ifexpr:{{#if:0|1|0}} and 0!=0
   |{{#ifeq:en|en
     |Extension:Translate
     |{{#if:
        |{{#ifeq:Script error: No such module "string".|0
          |
          | Script error: No such module "string".
        }}
        |{{#if:{{ Template:TNTN | nsp = 0 }}
          |{{ Template:TNTN | nsp = 0 }}
          |Extension:Translate
       }}
     }}
   }}
   |{{ Template:TNTN }}
 }}
 |{{#if:0
   |{{#if:Extension:Translate
     |Extension:Translate
     |Extension:Translate
   }}
   |Extension:Translate
 }}

}}}}]]{{#ifeq:Extension:Translate|

 |

}} extension, this template may be used in three ways.

  1. Substitute this template, then embed the wikilink target in a [[:Template:^(]]tvar name=id[[:Template:)^]]...[[:Template:^(]]/tvar[[:Template:)^]], separate from the translatable text of the link.
    For example, instead of {{ll|Communication|About communication}}, the translation markup in the translatable page will be [[[[:Template:^(]]tvar name=1[[:Template:)^]]Special:MyLanguage/Communication[[:Template:^(]]/tvar[[:Template:)^]]|About communication]].
  2. Alternatively, exclude this code from the translatable section.
    For example, for some text {{ll|Communication|About communication}} some text, the translation markup in the translatable page will be:
    [[:Template:^(]]translate[[:Template:)^]]some text[[:Template:^(]]/translate[[:Template:)^]] [[:Template:((]]ll|Communication|2=[[:Template:^(]]translate[[:Template:)^]]About communication[[:Template:^(]]/translate[[:Template:)^]][[:Template:))]] [[:Template:^(]]translate[[:Template:)^]]some text[[:Template:^(]]/translate[[:Template:)^]]
    This is useful for bulleted lists of links, e.g. in the "See also:" sections.
  3. If link text is the same as the name of the target page, all of the code could also be embedded into Template:Tag.
    For example, instead of Template:Tlx, the wikicode in the translatable page will be [[:Template:^(]]tvar name=1[[:Template:)^]][[:Template:((]]ll|Communication[[:Template:))]][[:Template:^(]]/tvar[[:Template:)^]].

Test cases

Template:Localized link/testcases

See also

}}