# Multilingual sites

Pixel has no language settings of its own. What it renders on a multilingual
site follows from two facts: an image is rendered for one post, and the
language of the request is part of what decides whether a rendered file is
still current.

## One post per language

Translation plugins such as WPML store each translation as its own post with
its own ID. Pixel renders a separate image for each of these posts, and
dynamic data such as `{post.title}` or `{post.excerpt}` comes from the
translated post, so it is already in the right language.

Text you type into a design is the same for every language. To change it per
language, create one image per language and give each a condition for its
language. The custom condition below uses WPML's `wpml_current_language`
filter:

```php
add_filter('sleekPixel/conditions', function ($conditions) {
  $conditions[] = [
    'id' => 'is_german',
    'label' => 'Is German',
    'value' => apply_filters('wpml_current_language', null) === 'de',
  ];

  return $conditions;
});
```

In the German image, add a row **Is German** **is equal to** to each condition
group; in the image for the other languages, add the same row with **is not
equal to**. See [Conditions](/docs/pixel/locations.md) for how rows and groups
combine.

## One post for all languages

Some translation plugins serve every language from the same post. Pixel
renders such a post in the language of the request: WordPress's current
locale is part of the rendered file's fingerprint, and a background render
switches to the locale the page was requested in. Pixel keeps one file per
design, post and use, though, so when visitors alternate between languages the
image is rendered again for each switch. Separate posts per language avoid
that.
