π Language and Localization¶
β Back to Documentation Index
π Overview¶
The Mail Archiver interface is available in 11 languages. The language is a per-browser preference stored in a cookie β it is not tied to a user account, and it never affects the archived mail itself: messages are always stored exactly as they were received.
π Supported languages¶
| Language | Code |
|---|---|
| English (default) | en |
| English (GB) | en-GB |
| SlovenΕ‘Δina | sl |
| Deutsch | de |
| Italiano | it |
| FranΓ§ais | fr |
| EspaΓ±ol | es |
| Nederlands | nl |
| Π ΡΡΡΠΊΠΈΠΉ | ru |
| Magyar | hu |
| Polski | pl |
English is the default and the fallback. Anything a translation does not cover is shown in English, so a partly translated language never leaves you with an empty label.
π Switching the language¶
- Click your username in the top-right corner to open the user menu.
- Under Language, pick a language from the list β the page reloads immediately in that language.
The choice is written to a cookie that is valid for one year and applies to this browser only. Other users, and the same user in another browser or on another device, keep their own setting. Because the cookie outlives the session, the language is still selected after you sign out and back in.
π§© What the language setting does β and does not β affect¶
- Translated: all interface text β menus, buttons, form labels, validation and error messages, job status pages and the access log's action descriptions.
- Not translated: archived mail. Bodies, subjects and attachments are stored and displayed byte-for-byte as received.
- Search: the query syntax is the same in every language; see Mail search. Changing the language does not change how mail is stored or indexed.
- Timestamps: dates are displayed in the browser's local time zone and
formatted for the selected culture. To pin the display time zone instance-wide
instead, set
TimeZone__DisplayTimeZoneId(IANA identifier, e.g.Europe/Berlin) β see Setup and Parameters.
π οΈ For contributors: adding or changing translations¶
The translated strings live in Resources/:
| File | Purpose |
|---|---|
SharedResource.resx |
Neutral resource file β English, 1148 keys |
SharedResource.<culture>.resx |
One file per language, e.g. SharedResource.de.resx |
Rules that follow from how .NET resolves resources here:
- Add new keys to the neutral file first, then to the language files. A key that is missing from a translation falls back to the English text β nothing breaks, the page just stays partly English.
- A key that exists only in a translation file is dead weight. It is never
looked up, because lookup starts at the neutral file. (At the time of writing,
DeleteAccountAllEmailsButtonandSign Outexist only in some translations.) en-GBis a partial override, by design. It defines only 245 of the 1148 keys and inherits the rest from the neutral English file β which is why it reads like English except where British wording or date formats differ. German, Spanish, French, Hungarian, Italian, Dutch, Polish, Russian and Slovenian are currently complete.- Adding a whole language needs three things: a new
SharedResource.<culture>.resx, an entry in the culture list inProgram.cs(UseRequestLocalizationβAddSupportedCultures/AddSupportedUICultures), and an<option>in the language dropdown inViews/Shared/_UserInfo.cshtml. Without the last two the file is never used.
See CONTRIBUTING.md for the contribution process, coding standards and how to submit a pull request.
π Related Documentation¶
- Setup and Parameters β
TimeZone__DisplayTimeZoneId - Mail search β query syntax
- User Management β roles and permissions