Help:Extension:Translate/Page translation administration/cs

O co jde. Překlad stránek je vylepšení, které dovoluje kontrolovat překlad wiki stránek do jiných jazyků. Přeložený obsah odpovídá obsahu původní překládané stránky. To je zásadní rozdíl oproti tomu, jak se pracuje s články u různých jazykových verzí Wikipedie. Ty jsou na sobě obsahově zcela nezávislé. I když se předpokládá, že se bude překládat pouze z jednoho výchozího jazyka, mohou být originální články napsané v jiných jazycích a překladatelé při překladu mohou kromě výchozího textu i formulace z jiných jazykových verzí, pokud existují.

K čemu to je. Bez jakékoliv pomůcky, se stává údržba atuálních překladů do jiného jazyka i několika málo stránek dřív nebo později i v lepším případě zabijákem času. V tom horším se změní takový web ve zcela nepotřebný shluk neaktualizovaných stránek se zavádějícím obsahem. Díky tomuto rozšíření, se tomu lze vyhnout. Princip spočívá v tom, že se výchozí obsah originální stránky rozdělí do menších textových zpráv, které lze postupně překládat. Na překladu může spolupracovat neomezený počet více či méně schopných překladatelů. A po případné změně výchozí stránky není nutné dělat celý překlad znovu. Stačí aktualizovat pouze ty zprávy, u kterých došlo k nějaké změně ve zdrojovém textu.

Pro koho. Tento elaborát do hloubky popisuje jak to celé funguje a na ukázkových příkladech demonstruje správné postupy pro reálné nasazení. Doplňuje svým obsahem Special:MyLanguage/Help:Extension:Translate/Page_translation_example Je určen k poučení nejenom správcům překládaných stránek, ale všem uživatelům wiki, co chtějí nějakým způsobem úpravit zdrojový kód překládané stránky, ale nemají práva, která by jim dovolila označit upravenou stránku k novému překladu.

Koloběh překládané stránky
Role. Do procesu psaní a překladu stránky je zapojena celá řada lidí různých rolí. Autor vytvoří výchozí obsah. Korektor opraví pravopisné chyby. Administrátor označí stránu k překladu. Překladatelé přeloží textové zprávy. Někdo jiný časem zaktualizuje původní stránku. Administrátor označí tyto změny k novému překladu a překladatelé postupně zaktualizují obsah textových zpráv, kterých se změny týkají. Tyto role se mohou více či méně překrývat, ale konečná odpovědnost za překlad je vždy na správci překládaných stránek. Ten rozhoduje, kdy je stránka připravena k prvnímu překladu. Po případných změnách kontroluje, zda je obsah správně připraven k překladu a schvaluje (nebo opravuje) změny.

Příprava. Pokud chcete mít co překládat, musíte nejdřív něco napsat. Pokud jste už nějaké stránky přeložili bez toho, že byste využili rozšíření Translate, tak si přečtěte níže uvedenou část, která se věnuje migraci překladů. Chcete-li překládat hodně textu a pokud možno rychle, tak je velmi důležité, aby byl výchozí text dobře formátovaný a pokud možno obsahově perfektní. Před označením stránky k překladu požádejte někoho jiného, pokud možno jazykově schopnějšího než jste vy, aby vám udělal korekturu, aby byl výsledný text správný nejenom z gramatického hlediska, ale pokud možno také jasný, stručný a snadno pochopitelný. Květnaté, příliš komplikované věty, bývají kamenem úrazu i pro mnohé zkušené překladatele a zbytečně odrazují potenciální překladatele z řad dobrovolníků. Stejný efekt má i příliš komplikované formátování výchozího textu, ale správce překládaných stránek ví jak takový kód ošetřit, aby se tomu mohli překladatelé vyhnout. Viz níže uvedenou část věnovanou rozdělení textu pomocí značek. Je pochopitelné, že se původní text postupem času změnám nevyhne, ale pamatujte, že je vždy lepší v takovém případě vyčkat, až se změny v obsahu výchozí stránky ustálí. Na druhou stranu je nutno říci, že tento systém průběžnou aktualizaci překladů v pohodě zvládá viz jak se postupuje při změnách.

Otagování. Pokud kdokoliv uzná, že je obsah výchozí stránky připraven k překladu, tak může části, které lze překládat obalit tagem $tag-translate. Po označkování se na začátek stránky přidá ještě tag $tag-lang lištu umožňující přepínat mezi existujícími překlady. Její obsah se postupně mění, podle toho jak překlady přibývají a u každého z nich se po přepnutí návštěvníkům přeložené stránky zobrazuje také procentuální stav zpracování překladu. To je docela důležité, protože jinak tuto informaci vidět není. Systém po rozpoznání tagu $tag-translate zjistí, že jde o stránku, kterou lze překládat a v jejím záhlaví vygeneruje link, kterým lze stránku označit k překladu. Zároveň také bude před uložením kontrolovat správnou syntaxi překladu a nedovolí uložení, pokud jste kupř. zapoměli přidat uzavírací značku. Stránka označená k překladu se bude zobrazovat také na speciální stránce Special:PageTranslation, jako "připravena pro označkování".

Marking. After the tagging, a translation administrator marks the page for translation. The interface is explained in Page translation example. The translation administrator's responsibility is to make sure that the segmentation makes sense and that tagging has been proper. The page can be marked again if it has changed in the meanwhile. See below how to make changes that cause minimal disruptions. The marking of the page starts a background process that uses MediaWiki's job queue. This process goes over each translation page and regenerates it: changes in the translation page template will be reflected and outdated translations will be replaced temporarily with the original source text. On the contrary, the translation interface is updated immediately.

Changes. Users can continue making changes to the translatable page source. The changes will be visible to users viewing the page in the source language, but translations are done against the translation units extracted from the last version of the translatable page which has been marked for translation: the translation pages are reported to be 100 % up to date if all translation units have been translated, even if the source page has new changes. You can easily see whether there are unmarked changes when viewing the translatable page in the source language: there is a notice at the top which says that you can translate this page and also links to changes if there are any.

Source language. There is also a translation page with the language code of the source language: it doesn't contain the extra tags and other markup related to page translation which are used in the translatable page source. This page is not linked from the interface, but it is handy for example when you want to transclude the page (typically for translatable templates) or export it.

Closed translation requests. Some translatable pages have a content that is only interesting for a certain period of time. For example announcements and regular status updates, like the Wikimedia monthly highlights. You can keep those pages around with translations, but hide them from the translation interface. This does not prevent further translations to the pages, but it greatly reduces the chance that a user accidentally starts translating the page. Discouraging and its reversion are done from Special:PageTranslation.

Prioritizing languages. You can also define a list of languages that you specifically want translations into; leaving the language list empty is interpreted as all languages allowed. The page will behave like a discouraged page (see previous paragraph) for the languages not in the priority list and, when translating into them, translators will be given a notice. You can also prevent the translation in other languages, say if translations are actually used elsewhere and you won't be able to use them but in some languages.

Grouping. It is possible to group related pages together. These groups work like all the other message groups. They have their own statistics and contain all the messages of the subgroups: in this case translatable pages. This functionality is currently in Special:AggregateGroups. Aggregate message groups are collapsed by default in Special:LanguageStats in the group selector at Special:Translate.

Přesuny. Překládané stránky lze přesouvat tak jako jiné. Před přesunem si můžete zvolit, jestli chcete přesunout i všechny podstránky. Během tohoto kroku může dojít na pozadí k přesunu většího množství stránek, a dokud tato operace neskončí, nemusí být pro takovou stránku překládací rozhraní dostupné. Po ukončení přesunu se o tom objeví záznam v Knize překladů stránek, kterou najdete mezi protokoly.

Deleting. Like move, deletion is accessed from the normal place. You can delete either the whole translatable page, or just one translation page, from the delete button on it. Deletion will also delete all the related translation unit pages. As in move, a background process will delete the pages over time and completion is noted in the page translation log. Deletion requires "delete" and "pagetranslation" permission, but individual translation unit pages can always be deleted with standard "delete".

Reverting. Similarly, reverting incorrect edits works as usual (including the rollback button): you only have to edit the affected translation unit and the translation page will be updated as well. To find the edit to the translation unit from the edit to the translation page, just click the "" link for the editor and look for an edit at a similar time.

Ochrana. Stránku která je určena k překladu sice lze zamknout, ale na překlady se tento zámek použít nedá. A to ani tehdy, je-li nastaveno kaskádové zamknutí. Pokud chcete zamezit dalším úpravám již provedeného překladu, pak máte jedinou možnost - nastavit jako prioritní pouze jazyk výchozího překladu a zakázat překlady do jiných jazyků. Kombinací zámku a tohoto nastavení zabráníte jak úpravám výchozí stránky, tak přeložených stránek a již hotových překladů. Také je možné zamykat jednotlivé přeložené stránky, i když to není zrovna ten nejlepší způsob ochrany.

Vyřazení z překladu. Stránku je možné kdykoliv ze seznamu překládaných stránek vyřadit, ovšem není to zrovna doporučená akce. Před vyřazením se musí z výchozí stránky nejprve odstranit všechny tagy translate. Teprve pak můžete použít speciální stránku Special:PageTranslation, ke které se můžete dostat také přes link v záhlaví překládané stránky, a stránku vyřadit. Po jejím vyřazení bude zrušena celá struktura podstránek, spojená s automatickým překladem, ale existující přeložené verze stránky zůstanou tam kde jsou a lze s nimi normálně pracovat.

Anatomy of a translatable page
The translation of a translatable page will produce many pages, which all together compose the translatable page in the broadest sense: their title is determined by the title of the translatable :


 * (the source page)
 * (the translation pages, plus a copy of the source page without markup)
 * (all the translation unit pages)

In addition to this, there are the translation page template and the sources of translation units, extracted from the source page and stored in the database. The system keeps track of which versions of the source page contain translation tags and which version of them have been marked for translation.

Every time a translation unit page is updated, the system will also regenerate the corresponding translation page. This will result in two edits. The translation unit page edit is hidden by default in recent changes and can be shown by choosing show translations from the translation filter. Any action other than editing (like deleting and moving) the translation unit pages will not trigger the regeneration of the corresponding translation page.

If you need the copy of the source page without markup, e.g. to be pasted in another wiki without Translate, the text will be displayed or saved.
 * identify the source language code (for English, en ) and visit ;
 * click the "" button to reach an address like this and replace  with   in the address bar, press enter:

Segmentation
General principles:


 * 1) All text intended for translation must be wrapped in   tags. There can be multiple pairs of tags in one page.
 * 2) Everything outside those tags will not change in any translation page. This static text, together with the placeholders which mark the place where the translation of each translation unit will be substituted, is called the translation page template.
 * 3) Too much markup in the text makes it difficult for translators to translate. Use more fine grained placing of   tags when there are lots of markup.
 * 4) The text inside   tags is split into translation units where there is one or more empty lines between them (two or more newlines).

Restrictions. The page translation feature places some restrictions on the text. There should not be any markup that spans over two or more translation units. In other words, each paragraph should be self-contained. This is currently not enforced in the software, but violating it will cause invalid rendering of the page, the severity depending on whether MediaWiki itself is able to fix the resulting html output or not.

Parsing order. Beware, the  tags work differently from other tags, because they do not go through the parser. This should not cause problems usually, but may if you are trying something fancy. In more detail, they are parsed before any other tags like  or , with the exception of   which is recognized by the Translate extension in some circumstances (such as rendering a page) but not in others (such as generating the list on Special:PageTranslation of pages containing  ). If you want to have the literal expression " " in the source text, you should escape it like " ".

Tag placing. If possible, try to put the tags on their own lines, with no empty lines between the content and the tags. Sometimes this is not possible, for example if you want to translate some content surrounded by the markup, but not the markup itself. This is fine too, for example:

To make this work, the extension has a simple whitespace handling: whitespace is preserved, except if an opening or closing  tag is the only thing on a line. In that case the newline after the opening tag or before the closing tag is eaten. This means that they don't cause extra space in the rendered version of the page.

Variables. It is possible to use variables similar to template variables. The syntax for this is . For translators these will show up only as, and in translation pages will automatically be replaced by the value defined in the translatable page (so they are global "constants" across all its translation pages). Variables can be used to hide untranslatable content in the middle of a translation unit. It also works for things like numbers that need to be updated often. You can update the number in all translations by changing the number in the translatable page source and re-marking the page. You do not need to invalidate translations, because the number is not part of the translation unit pages.

Příklady značkování
Toto jsou ukázkové příklady a postupy jak řešit různé situace při wiki značkování.

{| class=wikitable Přeloženo s jazykovou příponou: Kategorie:Auta/en (doporučeno, ale nepodporováno)
 * Kategorie
 * Kategorizaci lze provádět dvěma způsoby: Buď kategorii vložit do kódu překládané stránky prostřednictvím šablony, nebo kategorii překládat jako každou jinou textovou zprávu. Pokud použijete šablonu, budou všechny překlady součástí jedné kategorie. U kategorizace v překladu, musí být uživatelé poučeni o pravidlech kategorizace. Napravo jsou uvedeny obě cesty, i s tím co každá z nich obnáší z technického hlediska.

[...] &lt;/translate>


 * Jméno kategorie se nepřekládá (podobně jako se nepřekládají jména stránek).
 * Každý jazyk má svou vlastní verzi kategorie.
 * Textový obsah kategorie sám o sobě lze překládat: kategorie mohou být vzájemně prolinkovány a překládat lze i nadpisy (to ale neplatí pro názvy kategorií uvedené odkazech atp.)

"Žádný překlad": Kategorie:Auta

Titulek by v podstatě mohl být součástí překládaného odstavce, ale je lepší jeho překlad udržovat oddělený od ostatního textu, protože tak lze rychle vygenerovat lokalizovaný obsah, aniž by bylo nutné analyzovat celý obsah přeložené stránky. Po označkování bude identifikátor umístěn až za uzavírací značku titulku, jinak by MediaWiki nemohla titulek správně identifikovat, kdybychom chtěli editovat pouze jím vymezenou část stránky. Značkování také pomáhá překladatelům orientovat se v kontextu zpráv. Špatně: == &lt;translate>Culture&lt;/translate> ==
 * Do stejné kategorie spadnou i překlady (u menšího počtu stránek to nevadí, ale při větším počtu překladů se může stát seznam stránek v kategorii nepřehledný)
 * Název kategorie se nepřekládá (proto může být v šabloně tak jak je).
 * Titulky
 * Titulky

Špatně: &lt;translate>== Culture ==&lt;/translate> ''' Doporučené rozvržení: ''' &lt;translate>

Culture
Lorem ipsum dolor. &lt;/translate>

&lt;translate> &lt;/translate>
 * Obrázky
 * Images that do contain language specific content like text should include the full image syntax in an unit. Other images can only tag the description with optional hint in message documentation of the page after it has been marked.
 * Images that do contain language specific content like text should include the full image syntax in an unit. Other images can only tag the description with optional hint in message documentation of the page after it has been marked.


 * Odkazy
 * Links can be included in the paragraph they are inside. This allows changing the link label, but also changing the link target to a localized version if one exists.
 * Links can be included in the paragraph they are inside. This allows changing the link label, but also changing the link target to a localized version if one exists.

If the target page is (or should be) also translatable, you should link to it by prepending  to its title. Only the link label will need to be translated, because this automatically redirects users to the translation page in their own interface language, as selected for instance via the UniversalLanguageSelector. However, to achieve a constant behavior the syntax must be used for all links.

Because headers are translated, you cannot rely on the automatically generated id's for headers. You can add your own anchors. To have them outside of the translation template you need to break up the page into multiple  tag pairs around each header you want to have an anchor to. Interní odkazy: &lt;translate> Helsinki is capital of Finland. &lt;/translate>

Odkazy na přeložitelné stránky: &lt;translate> It has marvelous beaches with a lot of seagulls. &lt;/translate> Externí odkazy: &lt;translate> PHP (website) is a programming language. &lt;/translate> Links within a page: &lt;translate>

Culture
Lorem ipsum dolor.

...

For more about food, see section about culture. &lt;/translate>

&lt;translate> &lt;/translate> &lt;translate> &lt;/translate>
 * Seznamy
 * Lists can get long, so might want to split them into multiple parts with for example five items or less in each as follows. Do so only if the items are sufficiently independent to be translate separately in all languages, don't create "lego messages": for instance, you must avoid to split a single sentence in multiple units, or to separate logically dependent parts which may affect each other (with regard to punctuation or style of the list, for instance). To split a list, use -tags. Do not insert new lines as this will break the HTML output.
 * Lists can get long, so might want to split them into multiple parts with for example five items or less in each as follows. Do so only if the items are sufficiently independent to be translate separately in all languages, don't create "lego messages": for instance, you must avoid to split a single sentence in multiple units, or to separate logically dependent parts which may affect each other (with regard to punctuation or style of the list, for instance). To split a list, use -tags. Do not insert new lines as this will break the HTML output.
 * General principles
 * Headings
 * Images
 * Tables
 * Categories
 * Links
 * Templates


 * Čísla
 * With numbers and other non-linguistic elements you may want to pull the actual number out of translation and make it a variable. This has multiple benefits:
 * With numbers and other non-linguistic elements you may want to pull the actual number out of translation and make it a variable. This has multiple benefits:

&lt;translate> Income this month  EUR &lt;/translate> Note that this prevents the translators from localising the number by doing currency conversion. The  call makes sure the number is formatted correctly in the target language.
 * You can update the number without invalidating translations.
 * Translation memory can work better when the changing number is ignored.


 * Šablony
 * Templates have varying functions and purposes, so the best solution depends on what the template is for. If the template is not a part of longer paragraph, it should be left out, unless it has parameters that need to be translated. If the template has no linguistic content itself, you don't need to do anything for the template itself.
 * For an example of templates translated with page translation, see Translatable navigation template. To use this template, you need to have another template similar to Translatable navigation template, because you cannot include the template by  anymore. This is not yet provided by the Translate extension itself, but that is in the plans.
 * For an example of templates translated with page translation, see Translatable navigation template. To use this template, you need to have another template similar to Translatable navigation template, because you cannot include the template by  anymore. This is not yet provided by the Translate extension itself, but that is in the plans.

Another way is to use the unstructured element translation to translate the template, but then the language of the template will follow the user's interface language, not the language of the page he is viewing.
 * }

Úpravy původního textu
Základní pravidla:


 * Vyhýbej se změnám
 * Když už musíš něco měnit, tak se snaž dělat změny co nejmenší
 * A nepřidávej svévolně další identifikátory zpráv

Identifikátory zpráv. Je-li stránka označena k překladu, přidá systém do zdrojového kódu původní stránky před každou zprávu, která se bude překládat unikátní identifikátor. Viz níže uvedený příklad. Tyto identifikátory jsou pro fungování překládacího systému zcela zásadní, protože se využívají i pro sledování změn u překládaných zpráv. Proto nikdy nepřidávejte tyto identifikátory jak vás napadne. Identifikátor se umísťuje na řádek, která předchází textu překládané zprávy. Výjimku tvoří nadpisy. U těch se umísťuje na konec řádku s nadpisem, až za uzavírací značky. Za nimi totiž začíná editovatelná oblast sekce vymezené nadpisem. You should never add unit markers yourself. The markers are always on the line before the unit; or, if it starts with a header, after the first header on the same line. The different placement for headers is needed to keep section editing working as expected.

&lt;translate>

Birds
&lt;!--T:1--> Birds are animals which....

&lt;!--T:2--> Birds can fly and... &lt;/translate> Změny v překládaném textu. S velkou pravděpodobností dříve či později budete chtít opravit překlep, gramatickou chybu, nebo provést nějakou jinou změnu původního textu. Po takové změně je třeba znovu označit stránku k překladu. Ještě předtím se můžete podívat, jaké změny v textu byly provedeny. Většinou jde o změny, které na již zhotovený překlad nemají zásadní vliv, proto můžete zabránit jeho zneplatnění: překladatel si bude moct zobrazit změny, až bude zprávy případně aktualizovat.

Nový text na stránce. Nový text můžete přidat kamkoliv do prostoru vymezeného tagy traslate. Důležité je, aby byl od již přeloženého textu oddělen alespoň jedním prázdným řádkem. Systém ho pak bude akceptovat jako novou zprávu k přeložení. Pokud potřebujete přidat nový text jinam, tak ho jednoduše uzavřete do tagu translate. Nepřidávejte žádné identifikátory. Systém si je udělá sám.

Odstranění překládané zprávy. Text se musí odstranit včetně identifikátoru zprávy.

Rozdělení textu. Již přeložený text můžete rozdělit na dvě samostatné zprávy tím, že jej rozdělíte prázdným řádkem, a nebo tím, že ji rozdělíte na dvě samostatné části vymezené tagem translate. Původní identifikátor můžete ponechat, jako součást bloku původní zprávy. V takovém případě bude překladatel pouze aktualizovat obsah textové zprávy spojené s původním identifikátorem. Druhá možnost je, původní identifikátor odstranit. Z hlediska systému pak půjde o nové zprávy a při opětovném označení stránky k překladu si pro ně vytvoří nové identifikátory.

Sloučení překládaných zpráv. Pokud sloučíte několik zpráv do jedné, tak odstraňte všechny nadbytečné identifikátory. Ponechte jen ten, který označuje zprávu, která se bude aktualizovat.

Přeskupení zpráv. Překládané textové bloky můžete v rámci stránky libovolně přesouvat, aniž by tím došlo ke zneplatnění překladu: podmínkou je, že s textem přesouváte i příslušný identifikátor zprávy.

Předtím, než označeníte novou verzi stránky k překladu, pamatujte na to co to obnáší, především myslete na to, že překladatelé budou muset texty znovu přeložit, pokud se jejich obsah změnil. Také berte v úvahu, že není dobré dělat takové změny, které by vedly k mrhání časem překladatelů. Pokud původní stránka obsahuje více změn, které nejsou zcela zásadní, je lepší počkat, až se její obsah ustálí a teprve pak znovu označit stránku k překladu.

Nepoužívané přeložené zprávy se automaticky neodstraní, ale z hlediska fungování celého systému to neznamená nějaký zásadní problém.

Migrating to page translation
If you have been translating pages before using the page translation system, you might want to migrate the pages to the new system, at least the ones you expect to have new translations and want statistics for. You will probably have existing templates for language switching and maybe different page naming conventions.

You can start migration by cleaning up, tagging and marking the source page. You can keep the existing language-switching templates while you migrate the old translations. If your pages follow the language code subpages naming convention, they will be replaced with the source text after marking the source page for translation, but you'll still be able to access translations from history.

This manual task has been partly automated by Special:PageMigration, which shows the source and target units besides each other and allows the user to adjust the units by providing a set of features mentioned later in this page.

How to use?

 * 1) Go to Special:PageMigration
 * 2) Enter the title of the page and the language code. For example, "Help:Special pages" & "fr"
 * 3) The source text which was divided into units by Translate and the imported translations will be shown besides each other with some initial alignment.
 * 4) Use the actions available for each unit to manually do the remaining alignment
 * 5) As translated units are editable, do required manual improvements (for add translation variables, fix links and markup, etc.)
 * 6) Click on the "" button. This will create pages under the Translations namespace of the form  . The old translations have been imported into Translate.
 * 7) Else, if you wish to abort the importing, click on the 'Cancel' button.

Actions available
Each row consisting of source and target unit has a set of action icons. They are used as follows:
 * 1) Add: Clicking on this action icon adds a new empty unit below the current one. Use this feature if you want to split the current unit and need a unit below.
 * 2) Swap: Clicking on this action icon swaps the content of the current unit with the unit below it. You can use this feature when the units get aligned improperly due to different ordering of sections. Or when you need to drag a unit below or above. In either case, remember it swaps with the unit below and does not create any additional units.
 * 3) Delete: Clicking on this action icon completely removes the corresponding target unit from the page and shifts the remaining target units up by one unit. Use this to remove unwanted content like code or imported translations which are present completely in the source language. Note: this irrevocable action (in the current session).

Troubleshooting

 * 1) If you mark a page for translation and immediately go to the special page and try to import translations, you may get an error message like "". This is because FuzzyBot didn't fuzzy the messages on the old page yet: the tool won't find an edit by FuzzyBot on the translation page. In this case, simply wait for FuzzyBot to do its job. Once an edit is seen, you can proceed with the imports.
 * 2) Please wait for some time after pressing the "" button. While the button background remains gray, there is an ongoing process of importing non-empty units. Once the button becomes colored again, the import is completed.

Tips

 * 1) Migration will be easier if you first (before the mark to translation) check whether existing translations are similar to the original English text, and manually edit the structure of pages: break paragraphs and lists, add the missing headers (even if empty).
 * 2) Will be useful to check the result in the core translation interface - some of the units may be immediately marked as obsolete because of errors markup or if not all of the translation variables was added.
 * 3) Translation of the page title will have to be added manually. If you do not know very well the language of the imported page, you can try to find the translation of the page title among the "links here" or sometimes in redirects. Note: Please don't translate the namespace, keep it untranslated.