Lokalizace

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Localisation and the translation is 99% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎interlingua • ‎magyar • ‎português • ‎svenska • ‎vèneto • ‎čeština • ‎македонски • ‎русский • ‎עברית • ‎العربية • ‎فارسی • ‎മലയാളം • ‎ไทย • ‎中文 • ‎日本語
i18n docs
shortcuts:
I18N
I18n
L10n
O lokalizačním týmu Nadace Wikimedia se píše na Wikimedia Language engineering .
Jak se překládají stránky této wiki objasní Projekt:Jazyková politika .

Toto je technický popis internacionalizace a lokalizace (i18n a L10n) MediaWiki. Obsahuje rady a doporučení, kterých by se měli držet vývojáři. Naše mantra je, že se i18n nemá implementovat dodatečně: je to klíčová součást, která by měla být součástí vašeho software od samého počátku, neboť patří mezi základní Zásady MediaWiki.

Překlady zdrojových kódů

translatewiki.net

translatewiki.net podporuje překlady všech zpráv z jádra MediaWiki , rozšíření a témat, prostřednictvím překladatelských nástrojů, které nabízí wiki. Pokud se nechcete zaobírat technickými detaily ohledně editace souborů, Git, vydávání záplat a tak podobně, jděte rovnou na translatewiki.net.

Veškeré překlady zpráv uživatelského rozhraní MediaWiki by měly projít skrz translatewiki.net, neměly by být vkládány přímo do kódu. Ve zdrojovém kódu je vhodné pracovat pouze s anglickými zprávami a jejich dokumentací.

Jádro MediaWiki a jeho rozšíření musí k zobrazování veškerého textu uživatelského rozhraní využívat systémové zprávy. Příklad, jak na to, najdete zde: Manuál:Speciální stránky . Pokud je rozšíření napsáno správně, pravděpodobně se v translatewiki.net objeví během několika dní poté, co o něm odpovědné osoby dají vědět na gerrit . Pokud si rozšíření nikdo nevšímá, dejte o tom vědět. Pokud je rozšíření pro překlad zatím nevhodné, zanechte o tom zprávu v kódu a uvědomte odpovědné osoby, je-li to nutné.

Vizte také Přehled lokalizačního systému a Co lze lokalizovat.

Hledání zpráv

Nápověda: Systémové zprávy demonstruje, jak můžete najít řetězec, který chcete přeložit. Povšimněte si zejména qqx triku , který byl zaveden v MediaWiki 1.18 .

E-mailová konference i18n

K odběru zpráv se můžete přihlásit zde: mediawiki-i18n@. V danou chvíli je provoz nízký.

Struktura kódu

Nejprve máte jazykový objekt v Language.php . Tento objekt obsahuje všechny lokalizovatelné řetězce zpráv . Obsahuje i další důležitá nastavení specifická pro jazyk a vlastní chování (velká písmena, malá písmena, data tisku, formátovací čísla, směr , vlastní gramatická pravidla atd.).

Objekt je vytvořen ze dvou zdrojů: podkategorie jeho verzí (třídy) a soubory zpráv (zprávy).

K dispozici je také MessageCache class (třída mezipaměti zpráv), který zpracovává zadávání textu prostřednictvím jmenného prostoru MediaWiki. Většina internacionalizace se v současnosti provádí prostřednictvím objektů Message a pomocí funkce zkratky wfMessage(), která je definována v includes/GlobalFunctions.php. Starší kód může stále používat staré funkce wfMsg*(), které jsou nyní považovány za zastaralé ve prospěch výše uvedených objektů Message.

Obecné použití (pro vývojáře)

Viz též Manual:Messages API .

Jazykové objekty

Existují dva způsoby, jak získat jazykový objekt. Globály $wgLang a $wgContLang můžete použít pro uživatelské rozhraní a jazyk obsahu. Pro libovolný jazyk můžete vytvořit objekt pomocí Language::factory( 'en' ), nahrazením označení "en" kódem jazyka například "cs". Můžete také použít wfGetLangObj( $code );, pokud $code již může být jazykovým objektem. Seznam kódů je v languages/Names.php.

Objekty Language jsou potřebné pro provádění funkcí specifických pro jazyk. Nejčastěji pro formátování čísla, času a data. Ale také pro vytváření seznamů a dalších věcí. Existuje několik způsobů ukládání do mezipaměti a sloučení s fallback languages , ale podrobnosti jsou při běžném použití irelevantní.

Používání zpráv

MediaWiki používá centrální úložiště zpráv, na která jsou v kódu odkazovány klíče. To se liší od například Gettext, který pouze extrahuje překladatelné řetězce ze zdrojových souborů. Systém založený na klíči usnadňuje některá řešení, jako jsou rafinace původních textů a sledování změn zpráv. Nevýhodou je samozřejmě to, že seznam použitých zpráv a seznam zdrojových textů pro tyto klíče se mohou synchronizovat. V praxi to není velký problém a jediným významným problémem je, že někdy i další zprávy, které se již nepoužívají, stále zůstanou na překlad.

Chcete-li, aby klíče zpráv byly lépe ovladatelné a snadno vyhledatelné, také s grifem, vždy je pište úplné a nespoléhejte se na jejich dynamické vytváření. Části klíčů zpráv můžete zřetězit, pokud máte pocit, že je to lepší pro vaší struktuřu, ale umístěte komentář se seznamem možných výsledných klíčů poblíž . Například:

PHP

// Použitelné zprávy zde:
// * myextension-connection-success
// * myextension-connection-warning
// * myextension-connection-error
$text = wfMessage( 'myextension-connection-' . $status )->parse();

JS

// Zprávy, které lze použít jsou zde:
// * myextension-connection-success
// * myextension-connection-warning
// * myextension-connection-error
var text = mw.msg( 'myextension-connection-' + status );

Podrobné použití funkcí zpráv v PHP a JavaScript je na Manual:Messages API .

Přidávání nových zpráv

Viz též: Localisation file format

Výběr klíče zprávy

Viz též: Manuál:Konvence pro psaní kódu

Klíč zprávy musí být celosvětově jedinečný. To zahrnuje jádro MediaWiki a všechna rozšíření a vzhledy.

Držte se malých písmen, číslic a pomlček v názvech zpráv; většina ostatních znaků je nepraktická nebo vůbec nefungují. Podle konvence MediaWiki na prvním znaku nerozlišuje velká a malá písmena a na ostatních znacích velká a malá písmena rozlišuje.

Při pojmenování postupujte podle globálních nebo místních konvencí. Pro rozšíření použijte standardní předponu, nejlépe název přípony, někdy následovaný spojovníkem ("-"). Výjimky:

  • Zprávy používané API. Musí začínat apihelp-, apiwarn-, apierror-. Za tuto předponu vložte příponu. (Tyto zprávy by měly být v samostatném souboru, obvykle pod includes/i18/api.)
  • Zprávy související s protokolem. Musí začínat logentry-, log-name-, log-description.
  • Uživatelská práva. Klíč pro jméno práva uvedený na Special:ListGroupRights musí začínat na right-. Název akce, která dokončuje větu „Z následujících důvodů nemáte oprávnění $2:“, musí začínat na action-
  • Značky revizí musí začínat tag-.
  • Názvy speciálních stránek musí začínat special-.

Další informace, které byste si měli všimnout při vytváření zpráv

  1. Ujistěte se, že pro zprávu používáte vhodné zpracování (analýza, {{ nahrazení, vazbu na HTML atd.)
  2. Pokud je vaše zpráva součástí jádra, měla by být obvykle přidána k languages/i18n/en.json, ačkoli některé komponenty, jako jsou Installer, EXIF tagy a ApiHelp, mají své vlastní soubory zpráv.
  3. Pokud je vaše zpráva s příponou, přidejte ji do souboru i18n/en.json nebo do souboru en.json v příslušném podadresáři. Zejména zprávy API, které vidí pouze vývojáři, a nikoli většina koncových uživatelů, jsou obvykle v samostatném souboru, například i18n/api/en.json. Pokud rozšíření obsahuje mnoho zpráv, můžete vytvořit podadresáře pod i18n. Všechny adresáře zpráv, včetně výchozího i18n/, musí být uvedeny v sekci MessagesDirs v extension.json nebo v proměnné $wgMessagesDirs .
  4. Dejte si pauzu a zvažte znění zprávy. Je vám to co nejjasnější? Nepochopili jste? Pokud je to možné, požádejte o připomínky od jiných vývojářů nebo lokalizátorů. Postupujte podle #internacionalizace.
  5. Přidat dokumentaci na qqq.json ve stejném adresáři. Další informace ve zprávě k dokumentaci.

Zprávy, které by neměly být překládány

  1. Ignorované zprávy jsou ty, které by měly existovat pouze v anglickém souboru zpráv. Jsou to zprávy, které by neměly potřebovat překlad, protože odkazují pouze na jiné zprávy nebo jazykově neutrální funkce, např. Na zprávu „{{SITENAME}}“.
  2. Volitelné zprávy mohou být přeloženy, pouze pokud byly změněny v cílovém jazyce.

Chcete-li takové zprávy nahlásit:

Odstraňování existujících zpráv

Odstraňte ji z en.json a qqq.json. Neobtěžujte se s jinými jazyky. Aktualizace od translatewiki.net budou toto zpracovávat automaticky.

Změna existujících zpráv

  1. Zvažte aktualizaci dokumentace ke zprávě (viz #Přidávání nových zpráv (#Adding new messages)).
  2. Změňte klíč zprávy, pokud staré překlady nejsou vhodné pro nový význam. To také zahrnuje změny v zacházení se zprávami (analýza, unikání, parametry atd.). Zlepšení formulace zprávy bez technických změn obvykle není důvodem pro změnu klíče. Na translatewiki.net budou překlady označeny jako zastaralé, aby na ně mohli překladatelé zacílit. Změna klíče zprávy nevyžaduje rozhovor s týmem i18n ani podání žádosti o podporu. Pokud však máte zvláštní okolnosti nebo otázky, zeptejte se na #mediawiki-i18n nebo na stránka podpory na translatewiki.net .
  3. Pokud je rozšíření podporováno translatewiki.net , změňte prosím pouze anglickou zdrojovou zprávu a / nebo klíč a doprovodnou položku v qqq.json. V případě potřeby se tým translatewiki.net postará o aktualizaci překladů, jejich označení jako zastaralých, vyčištění souboru nebo přejmenování klíčů, pokud je to možné. To platí také tehdy, když měníte pouze věci, jako jsou značky HTML, které byste mohli změnit v jiných jazycích, aniž byste těmito jazyky mluvili. Většina z těchto akcí se bude provede za translatewiki.net a dosáhne Gitu přibližně s jedním dnem zpoždění.

Lokalizace jmenných prostorů a aliasy speciálních stránek

Jmenné prostory a speciální názvy stránek (tj. "RecentChanges" v "Special:RecentChanges") jsou také přeložitelné.

Jmenné prostory

V současné době je překlad jmenného prostoru [1] zakázán na translatewiki.net, takže to musíte udělat sami v Gerritu, nebo zadejte úkol Phabricator: s žádostí, aby to udělal někdo jiný.

Chcete-li povolit překlad vlastních jmenných prostorů představených vaší příponou, vytvořte soubor MyExtension.namespaces.php, který vypadá takto:

<?php
/**
 * Překlady jmenných prostorů zavedených MyExtension.
 *
 * @file
 */

$namespaceNames = [];

// Pro wiki, kde rozšíření MyExtension není nainstalováno.
if( !defined( 'NS_MYEXTENSION' ) ) {
	define( 'NS_MYEXTENSION', 2510 );
}

if( !defined( 'NS_MYEXTENSION_TALK' ) ) {
	define( 'NS_MYEXTENSION_TALK', 2511 );
}

/** English */
$namespaceNames['en'] = [
	NS_MYEXTENSION => 'MyNamespace',
	NS_MYEXTENSION_TALK => 'MyNamespace_talk',
];

/** Finnish (Suomi) */
$namespaceNames['fi'] = [
	NS_MYEXTENSION => 'Nimiavaruuteni',
	NS_MYEXTENSION_TALK => 'Keskustelu_nimiavaruudestani',
];

Poté načtěte překladový soubor oboru názvů do MyExtension.php$wgExtensionMessagesFiles['MyExtensionNamespaces'] = dirname( __FILE__ ) . '/MyExtension.namespaces.php';

Nyní, když uživatel nainstaluje MyExtension na finskou (fi) wiki, bude vlastní jmenný prostor automaticky přeložen do finštiny a uživatel nemusí nic dělat!

Nezapomeňte také zaregistrovat jmenný prostor (-y) vaší přípony na stránce extension default namespaces .

Aliasy speciálních stránek

Aktuální informace naleznete v manuálové stránce pro speciální stránky . Následující se nezdá být platným.

Vytvořte nový soubor pro aliasy speciálních stránek v tomto formátu:

<?php
/**
 * Aliases for the MyExtension extension.
 *
 * @file
 * @ingroup Extensions
 */

$aliases = [];

/** English */
$aliases['en'] = [
	'MyExtension' => [ 'MyExtension' ]
];

/** Finnish (Suomi) */
$aliases['fi'] = [
	'MyExtension' => [ 'Lisäosani' ]
];

Potom jej nahrajte do instalačního souboru rozšíření takto: $wgExtensionMessagesFiles['MyExtensionAlias'] = dirname( __FILE__ ) . '/MyExtension.alias.php';

Pokud váš speciální kód stránky používá buď SpecialPage::getTitleFor( 'MyExtension' ) nebo $this->getTitle() (ve třídě, která poskytuje Special:MyExtension), použijte, pokud je k dispozici, lokalizovaný alias.

Parametry zprávy

Některé zprávy mají parametry. Jsou reprezentovány $1, $2, $3, … ve (statických) textech zpráv a nahrazeny za běhu. Typické hodnoty parametrů jsou čísla („3“ v „Smazat 3 verze?“) nebo uživatelská jména („Bob“ na „Stránka naposledy editovaná Bobem“), názvy stránek, odkazy atd. Nebo někdy i jiné zprávy. Mohou mít libovolnou složitost.

Seznam parametrů definovaných pro každou konkrétní zprávu je umístěn ve speciálním souboru „qqq.json“, který je umístěn ve složce „languages/“ na MediaWiki - více v dokumentace.

Nejlepe je používat celá slova s magickými slovy PLURAL, GENDER a GRAMMAR. Například {{PLURAL:$1|subpage|subpages}} je lepší než sub{{PLURAL:$1|page|pages}}. Usnadňuje vyhledávání.

Přepínače ve zprávách ...

Viz také Návod:Zprávy API#Poznámky o pohlaví, gramatice, množném čísle .

Hodnoty parametrů někdy ovlivňují přesná znění nebo gramatické variace ve zprávách. Neusilujeme o nepěkné konstrukce, jako je „$1 (sub)page(s) of his/her userpage“. Jsou pro uživatele špatné a můžeme je udělat lépe. Místo toho provedeme přepínače, které jsou analyzovány podle hodnot, které budou známy za běhu. Text statické zprávy pak poskytuje každou z možných voleb v seznamu, před níž je uveden název přepínače a odkaz na hodnotu, která se mění. To se podobá způsobu, jakým se v MediaWiki nazývají parser function (sparser funkce). K dispozici je několik typů přepínačů. Pracují pouze tehdy, pokud pro zprávy provádíte úplnou analýzu nebo {{-transformaci.

… na číslech prostřednictvím PLURALu

Viz také Návod:Zprávy API#Poznámky o pohlaví, gramatice, množném čísle .

MediaWiki podporuje množné číslo, což vytváří hezčí vzhled produktu. Například:

'undelete_short' => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',

Je-li pro konkrétní číslo uvedeno jednoznačně množné číslo, je možné s následující syntaxí

'Box has {{PLURAL:$1|one egg|$1 eggs|12=a dozen eggs}}.'
Buďte si vědomi použití PLURALUu u všech čísel
Viz též: Plural

Pokud je třeba do textu zprávy vložit číslo, uvědomte si, že některé jazyky budou muset použít PLURALu, i když jsou vždy větší než 1. Důvodem je, že v PLURALu v jiných jazycích než v angličtině jsou velmi odlišná a složitá rozlišení, srovnatelná s angličtinou 1st, 2nd, 3rd, 4th, … 11th, 12th, 13th, … 21st, 22nd, 23rd, … atd.

Nepokoušejte se dodávat tři různé zprávy pro případy jako „žádné položky se nepočítají“, „jedna položka se počítá“, „počítá se více položek“. Spíše nechte jednu zprávu, aby je všechny vzala. Nechte to na překladatelích a PLURALu, aby s nimi řádně zacházeli s případnými rozdíly v prezentaci v jejich příslušných jazycích.

Pokud je to možné, vždy uveďte číslo jako parametr. Pokud je to možné, vždy ke zdrojovým zprávám přidejte syntaxi {{PLURAL:}}. I když to v angličtině nemá smysl. Syntaxe řídí překladatele.

Jsou podporována zlomková čísla, ale množná pravidla nemusí být úplná.

Předejte počet položek seznamu jako parametry zprávám o seznamech

Nepředpokládejte, že existuje pouze singulární a množné číslo. Mnoho jazyků má více než dvě formy, které závisí na aktuálním použitém počtu a při vyjádření toho, co je uvedeno v seznamu viditelném pro čtenáře, musí použít gramatiku měnící se podle počtu položek v seznamu. Tedy, když váš kód vypočítá seznam, zahrňte count( $list ) jako parametr do titulků, náběhů, zápatí a dalších zpráv o seznamu, i když se počet v angličtině nepoužívá. Existuje neutrální způsob, jak mluvit o neviditelných seznamech, takže můžete mít odkazy na seznamy na dalších stránkách, aniž byste museli předem počítat položky.

… o uživatelských jménech prostřednictvím GENDER

Viz také Návod:Zprávy API#Poznámky o pohlaví, gramatice, množném čísle .
'foobar-edit-review' => 'Please review {{GENDER:$1|his|her|their}} edits.'

Pokud se ve zprávě odkazujete na uživatele, předejte do zprávy uživatelské jméno jako parametr a do dokumentace zprávy přidejte zmínku o tom, že je podporováno pohlaví. Pokud je pravděpodobné, že GENDER bude použito v překladech do jazyků s genderovým skloňováním, přidejte je explicitně do zdrojové zprávy v anglickém jazyce.

Pokud přímo oslovujete aktuálně přihlášeného uživatele, nechte uživatelské jméno jako parametr prázdné:

'foobar-logged-in-user' => 'You said {{GENDER:|you were male|you were female|nothing about your gender}}.'
MediaWiki version:
1.31

Gerrit change 398772

Pokud do zprávy zahrnete uživatelské jméno (např. „$1 vám poděkoval.“), zvažte nejprve jeho předání prostřednictvím wfEscapeWikitext(), abyste zajistili, že znaky jako * nebo ; nebudou interpretovány.

Uživatelé mají gramatická pohlaví
Viz též Gender

Když zpráva hovoří o uživateli, nebo se týká uživatele, nebo oslovuje uživatele přímo, uživatelské jméno by mělo být předáno zprávě jako parametr. Jazyky, které musejí nebo chtějí používat správnou gramatiku závislou na pohlaví, tak mohou udělat. To by mělo být provedeno, i když se uživatelské jméno nemá ve zprávě zobrazovat, například v „informujte uživatele na své diskusní stránce“, což je lépe provedeno „informujte uživatele na {{GENDER:$1|jí|jeho|jejich}} diskusní stránce “také v angličtině.

To neznamená, že jste vyzváni, abyste „sexizovali“ jazyk zpráv: používejte rodově neutrální jazyk, kdykoli je to možné s jasností a přesností.

… o použití kontextu uvnitř vět pomocí GRAMMAR

Viz také Návod:Zprávy API#Poznámky o pohlaví, gramatice, množném čísle .

K dispozici jsou také gramatické transformace pro aglutinační jazyky. Například pro finštinu, kde bylo naprosto nutné učinit jazykové soubory nezávislými na webu, tj. odebrat odkazy z Wikipedie. Ve finštině se „about Wikipedia“ stává „Tietoja Wikipediasta“ a „you can upload it to Wikipedia“ se stává „Voit tallentaa tiedoston Wikipediaan“. Přípony se přidávají v závislosti na tom, jak se slovo používá spolu s drobnými úpravami základu. Existuje dlouhý seznam výjimek, ale protože bylo potřeba přeložit pouze několik slov, jako je název webu, nemuseli jsme jej uvádět.

MediaWiki má gramatické transformační funkce pro více než 20 jazyků. Některé z nich jsou pouze slovníky pro názvy webů Wikimedia, ale jiné mají jednoduché algoritmy, které ale selžou ve všech nejběžnějších případech.

Ještě předtím, než MediaWiki provedla libovolnou gramatickou transformaci, měla pro názvy měsíců nominativní (v prvním pádu) / genitivní (pádové) rozlišení. Toto rozlišení je nutné u některých jazyků, pokud chcete nahradit názvy měsíců větami.

Filtrování speciálních znaků v parametrech a ve zprávách

Dalším (mnohem jednodušším) problémem se substitucí parametrů je únik HTML. Přestože je MediaWiki mnohem jednodušší, dělá to docela špatně.

Dokumentace zprávy

Pro dokumentaci zpráv se používá pseudojazykový kód qqq. Je to jeden z kódů standardu ISO 639, vyhrazený pro speciální použití. Tam neudržujeme překlady každé zprávy, ale shromažďujeme anglické věty „o každé zprávě“. Sděluje nám, kde se používá, poskytujeme rady o tom, jak ji překládat, a vyjmenovávat a popisovat její parametry, odkaz na související zprávy, a tak dále. V translatewiki.net se tyto rady zobrazují překladatelům, když upravují zprávy.

Programátoři musí dokumentovat každou zprávu. Dokumentace zpráv je nezbytným zdrojem - nejen pro překladatele, ale také pro všechny správce modulu. Kdykoli je do softwaru přidána zpráva, musí být také přidána odpovídající položka qqq; revize, které tak neučiní, jsou označeny „V-1“, dokud není přidána dokumentace.

Dokumentace v souborech qqq by měla být upravována přímo pouze při přidávání nových zpráv nebo při změně existující anglické zprávy způsobem, který vyžaduje změnu dokumentace, například přidání nebo odebrání parametrů. V ostatních případech by dokumentace měla být obvykle editována na translatewiki. Každý řetězec dokumentace je přístupný na https://translatewiki.net/wiki/MediaWiki:klíč zprávy/qqq, jako by to byl překlad. Tyto úpravy budou exportovány do zdrojových úložišť spolu s překlady.

Mezi užitečné informace, které by měly být v dokumentaci, patří:

  1. Zpracování zpráv (analýza, unikání, prostý text).
  2. Typ parametrů s příklady hodnot.
  3. Kde je zpráva použita (stránky, umístění v uživatelském rozhraní).
  4. Jak se zpráva používá tam, kde je použita (název stránky, text tlačítka, atd.).
  5. Jaké další zprávy se používají společně s touto zprávou nebo na které další zprávy se tato zpráva odkazuje.
  6. Cokoli jiného, co by mohlo být pochopeno, když je zpráva viděna v kontextu, ale ne když je zpráva zobrazena samostatně (což je případ, když je přeložena).
  7. Případně poznámky o gramatice. Například „otevřený“ v angličtině může být jak sloveso, tak přídavné jméno. V mnoha jiných jazycích jsou slova odlišná a nelze odhadnout, jak je překládat bez dokumentace.
  8. Přídavná jména, která popisují věci, jako jsou „postižené“, „otevřené“ nebo „blokované“, musí „vždy“ říkat, co popisují. V mnoha jazycích musí mít přídavná jména pohlaví podstatného jména, které popisují. Může se také stát, že různé druhy věcí potřebují různá přídavná jména.
  9. Má-li zpráva zvláštní vlastnosti, například pokud se jedná o název stránky nebo pokud by neměla být přímým překladem, přizpůsobena kultuře nebo projektu.
  10. Zda se zpráva objeví poblíž jiné zprávy, například v seznamu nebo nabídce. Znění nebo gramatické vlastnosti slov by pravděpodobně měly být podobné zprávám v okolí. Položky v seznamu mohou také souviset s nadpisem seznamu.
  11. Části zprávy, které nesmí být přeloženy, jako jsou obecný název oboru názvů, adresy URL nebo značky.
  12. Vysvětlení potenciálně nejasných slov, například zkratek, jako je „CTA“, nebo konkrétního žargonu, jako je „šablona“, „potlačení“ nebo „výhonek“. (Všimněte si, že je nejlepší se těmto slovům v první řadě vyhnout!)
  13. Screenshoty jsou velmi užitečné. Nepoužívat oříznutí - obrázek celé obrazovky, ve kterém se zpráva objeví, poskytuje úplný kontext a může být znovu použit v několika zprávách.

Několik dalších rad:

  • Pamatujte, že překladatelé velmi často překládají zprávy, aniž by skutečně používali software.
  • Překladatelé většinou nemají žádné kontextové informace ani o vašem modulu ani o jiných zprávách v něm.
  • Pouze přeformulovaná zpráva je ve většině případů zbytečná.
  • Nepoužívejte návrhářský žargon jako „nav“ nebo „comps“.
  • Zvažte napsat glosář technických termínů, které se používají ve vašem modulu. Pokud tak učiníte, ze zpráv na to odkažte.

Na jiné zprávy můžete odkazovat pomocí {{msg-mw|klíč zprávy}}. Udělejte to, pokud části zpráv pocházejí z jiných zpráv (pokud tomu nelze zabránit) nebo pokud jsou některé zprávy zobrazeny společně nebo ve stejném kontextu.

translatewiki.net poskytuje některé výchozí šablony dokumentace:

  • {{doc-action|[...]}} pro action- zprávy
  • {{doc-right|[...]}} pro right- zprávy
  • {{doc-group|[...]|[...]}} pro zprávy kolem skupin uživatelů (group, member, page, js a css)
  • {{doc-accesskey|[...]}} pro accesskey- messages

Pro více informací se podívejte na stránky šablon.

Rady k internacionalizaci

Kromě dokumentace překladatelé žádají, abyste zvážili některé rady, pro ulehčení a jejich práce. Aby mohla být efektivnější a umožnila skutečnou a dobrou lokalizaci pro všechny jazyky. I když pouze přidáváte nebo upravujete zprávy v angličtině, měli byste si být vědomi potřeb všech jazyků. Každá zpráva je přeložena do více než 300 jazyků. Zprávy zpracujte co nejlepším možným způsobem. Správná implementace těchto rad vám také často pomůže psát lepší zprávy v angličtině.

Hlavní místa, kde můžete najít pomoc zkušených a informovaných lidí ohledně i18n:

Prosím, zeptejte se tam!

Správně používejte parametry zprávy a přepínače

Je to předpoklad správného znění vašich zpráv.

Vyhněte se opětovnému použití zprávy

Překladatelé odrazují od opakovaného použití zprávy. To se může zdát kontra intuitivní, protože kopírování a duplikace kódů je obvykle špatný postup, ale u systémových zpráv je to často nutné. Ačkoli mohou být dva pojmy v angličtině vyjádřeny stejným slovem, nemusí to nutně znamenat, že mohou být vyjádřeny stejným slovem v každém jazyce. "OK" je dobrým příkladem: v angličtině se používá pro označení obecných tlačítek, ale v některých jazycích upřednostňují použití označení tlačítek souvisejících s operací, která bude tlačítkem prováděna. Dalším příkladem je prakticky jakékoli přídavné jméno: slovo jako „multiple“ (vícenásobně) v mnoha jazycích se mění podle pohlaví. Nelze jej znovu použít v jedné zprávě k popisu několika různých věcí. Musíte vytvořit několik samostatných zpráv.

Pokud přidáváte více identických zpráv, přidejte prosím dokumentaci k popisu rozdílů v jejich kontextech. Nebojte se o práci navíc pro překladatele. Překladová paměť v nich hodně pomáhá, zatímco si zachovává flexibilitu pro různé překlady v případě potřeby.

Vyhněte se fragmentovaným nebo 'patchworkovým' (slátaninám) zprávám

Jazyky mají různé pořadí slov a složitá gramatická a syntaktická pravidla. Je velmi obtížné překládat „lego“ zprávy, tj. zprávy tvořené několika částmi textu, třeba s určitým přesměrováním (také nazývaným „řetězové zřetězení“).

Je lepší udělat z každé zprávy úplnou a jednoduchou frázi. V případě potřeby lze snadněji do textového bloku zkombinovat několik vět. Pokud chcete zkombinovat několik řetězců do jedné zprávy, předejte je jako parametry, protože překladatelé je mohou při překladu správně uspořádat podle svého jazyka.

Vzájemně citované zprávy

Výjimkou z tohoto pravidla mohou být vzájemně citované zprávy: 'Do pole označeného „{{int:name}}" zadejte jméno původního autora a klikněte na „{{int:proceed}}" pro pokračování'. Díky tomu bude zpráva konzistentní, když vývojář softwaru nebo operátor wiki změní zprávy „jméno“ nebo „pokračovat“ později. Bez int-hacku by si vývojáři a operátoři museli být vědomi všech souvisejících zpráv, které vyžadují úpravu, když je změní.

Nepoužívejte termíny a šablony, které jsou specifické pro konkrétní projekty

MediaWiki používají velmi různí lidé v hnutí Wikimedia i mimo něj. Přestože byl původně vytvořen pro encyklopedii, nyní se používá pro různé druhy obsahu. Proto používejte obecné termíny. Vyhněte se například výrazům jako „článek“ a místo toho použijte „stránku“. Pokud si nejste zcela jisti, že vyvíjená funkce bude použita pouze na webu, kde se stránky nazývají „články“. Nepoužívejte „village pump“ (obecné čerpadlo), což je název komunitní stránky anglické Wikipedie. Místo toho použijte obecný pojem, například „komunitní diskusní stránku“.

Nepředpokládejte, že na všech wiki existuje určitá šablona. Šablony jsou pro wiki lokální. Platí to jak pro zdrojové zprávy, tak i pro jejich překlady. Zprávy používající šablony budou fungovat pouze pokud je šablona na každé wiki, kde je tato funkce implementována. Nejlepší je vyhnout se použití šablon ve zprávách úplně. Pokud je musíte skutečně použít, musíte to jasně dokumentovat v dokumentaci ke zprávě a v pokynech pro instalaci rozšíření.

Oddělené časy od dat ve větách

Některé jazyky musí vložit něco mezi datum a čas. Závisí to na gramatice jiných slov ve větě. Nebudou tedy moci jednoduše kombinovat datum a čas. Jiní mohou považovat kombinaci za vhodnou, proto je obvykle nejlepší volbou poskytnout v těchto případech tři hodnoty parametrů (datum/čas, datum, čas) a v každém překladu ponechte buď první nebo poslední dva nevyužité podle potřeby.

Vyhněte se {{SITENAME}} ve zprávách

{{SITENAME}} má několik nevýhod. Může to být cokoli (zkratka, slovo, krátká fráze, atd. ) A v závislosti na jazyce může vyžadovat použití {{GRAMMAR}} při každém výskytu. Bez ohledu na to bude každou zprávu s {{SITENAME}} nutné zkontrolovat ve většině jazyků wiki pro každou novou wiki, na které je nainstalován váš kód. Ve většině případů, kdy pro jazyk neexistuje obecná konfigurace GRAMMAR, budou muset operátoři wiki přidat nebo změnit PHP kód tak, aby získali {{GRAMMAR}} pro práci {{SITENAME}}. To vyžaduje nejen více dovedností, ale i více porozumění, než je běžné. Je vhodnější mít obecné odkazy, jako je „tato wiki“. Nezabrání to instalacím lokálně měnit tyto zprávy tak, aby používaly {{SITENAME}}. Ale přinejmenším nemusí hned a mohou odložit přizpůsobení zprávy až do wiki již běžící a používané.

Vyhněte se odkazům na vizuální rozvržení a pozice

Vše co se vykresluje, kde záleží na vzhledu. Nejčastěji jsou pro jazyky psané zprava doleva zrcadlena rozvržení obrazovky jazyků psaných zleva doprava. Ne vždy, ne zcela jen a pro některé jazyky a některé wiki. Ruční zařízení, úzká okna atd. Mohou pod sebou zobrazovat bloky, které by se objevily vedle sebe na větších displejích. Jelikož skripty a gadgety napsané na webu a uživatelské skripty a gadgety JavaScript mohou skrýt části nebo věci měnit nepředvídatelným způsobem, neexistuje spolehlivý způsob, jak zjistit správné rozvržení.

Není správné spojit informace o rozvržení s jazykem obsahu. Jazyk uživatelského rozhraní nemusí být jazykem obsahu stránky a rozvržení může být směsí obou v závislosti na okolnostech. Nevizuální uživatelští agenti, jako jsou čtečky akustických obrazovek a další pomocná zařízení, ani nemají koncepci vizuálního uspořádání. Ve většině případů by jste tedy neměli odkazovat na pozice vizuálního rozvržení, ačkoli výrazy sémantického rozvržení mohou být stále použity („předchozí kroky ve formuláři“, „atd.“).

MediaWiki nepodporuje zobrazování různých zpráv nebo fragmentů zpráv na základě aktuální směrovosti rozhraní (viz T30997).

Nový prohlížeč a podpora MediaWiki pro psaní ve východním a severoasijském písmu shora dolů [2] způsobí, že rozvržení obrazovky bude ještě nepředvídatelnější. nejméně osm možných rozvržení (levá/pravá počáteční poloha, horní/dolní počáteční poloha a to, co se stane nejdříve).

Vyhněte se odkazům na barvy obrazovky

Barva, ve které se něco vykresluje, závisí na mnoha faktorech, včetně vzhledů, skriptů a miniaplikacích JavaScriptu napsaných na webu a na uživateli a na přepsání místních agentů uživatelů z důvodu dostupnosti nebo technologických omezení. Nevizuální uživatelští agenti, jako jsou čtečky akustických obrazovek a další pomocná zařízení, ani nemají koncept barev. Proto by jste neměli odkazovat na barvy obrazovky. (Ze stejného důvodu by jste se také neměli spoléhat na barvu jako na mechanismus informování uživatele o stavu.)

Mít prvky zprávy před a za každým vstupním polem

Toto je doporučené vodítko, které se dosud nestalo standardem ve vývoji MediaWiki

Angličtina sice umožňuje efektivní využití dotazů ve vstupním poli položka – dvojtečka – prostor –, mnoho jiných jazyků však ne. Dokonce i v angličtině chcete častěji použít „Vzdálenost: ___ metrů“ než „Vzdálenost (v metrech): ___“. Ponecháte-li elementy <textarea> stranou, měli by jste myslet na každé vstupní pole, které následuje po vzoru „Vzdálenost: ___ metrů“. Tak:

  • vytvořte dvě zprávy, i když je druhá nd první může být v angličtině a některých dalších jazycích prázdná, nebo
  • umožněte vkládatat vstupy pomocí parametrů $i.

Vyhněte se nepřekládanému značkování HTML ve zprávách

Značky HTML, které nevyžadují překlad, například uzavírání <div>s, pravítka nad nebo pod a podobně, by obvykle neměly být součástí zpráv. Zbytečně zatěžují překladatele, zvětšují velikost souboru zpráv a představují riziko náhodného pozměnění nebo přeskočení v procesu překladu. Obecně se prostému HTML ve zprávách vyhněte, pokud je to možné.

Zprávy jsou často delší, než si myslíte!

Při překládání souborů zpráv v cizím jazyce nenajdete téměř nikdy zprávy kratší než ty čínské, zřídkakdy kratší než ty anglické, ale nejčastěji mnohem delší než anglické.

Zejména ve formátu, před vstupními poli, mají anglické zprávy tendenci být těsné a krátké. To se často v překladech neuchovává. Obzvláště skutečně netechnické jazyky třetího světa, lidové, středověké nebo starověké jazyky vyžadují k vysvětlení cizích nebo technických výzev několik slov nebo dokonce celé věty. Například krátká anglická zpráva „TSV file:“ může být přeložena do jazyka doslovně:

Sem zadejte název, který označuje soubor počítačových dat, který se skládá z postupně uspořádané řady psaných řádků, které jsou samy uspořádány jako série informačních polí, kde jsou uvedená pole informací ohraničena a hranice mezi nimi jsou jednoduché znaky toho druhu, který posouvá vozík psacího stroje dopředu na další předem definovanou pozici. Tady jdeme: _____ (děkuji)

Toto je, samozřejmě, extrémní příklad, ale je to pro názornost. Představte si tuto větu ve sloupci ve formě, kde každé slovo zabírá vlastní linii a vstupní pole je vertikálně vystředěno v dalším sloupci. :-(

Nepoužívejte velmi blízká, podobná nebo identická slova k označení různých věcí nebo konceptů

Například stránky mohou mít starší revize (určitého data, času a úprav), které obsahují minulé verze dané stránky. Slova reviz a verze lze použít zaměnitelně. Při revizi verzí stránek dochází k potížím a je zmíněna revize, tj. Proces jejich revize. To nemusí představovat vážný problém, pokud mají dvě synonyma revize různé překlady. Na to se však nespoléhejte. Aby se předešlo nesprávnému výkladu, je lepší se potížím vyhnout použitím „revize“ „aka“ „verze“.

Základní slova mohou mít nepředvídané konotace, nebo vůbec neexistují

Existují slova, která se obtížně překládají kvůli jejich velmi specifickému použití v MediaWiki. Některá se vůbec nepřekládají. Například v několika jazycích neexistuje slovo „uživatel“ týkající se „někoho, kdo něco používá“. Podobně se v kolínském dialiktu (Kölsch) anglická slova "namespace" a "apartment" překládají na stejné slovo. Kölsch říká „podporovatel a účastník“, protože jakýkoli odkaz na „použití“ by v dialektu příliš silně znamenal „zneužívání“. Termín „wiki farma“ se překládá jako „stabilní plný wikis“, protože farma s jednou plodinou by byla v rozporu s jazykem a nebyla by „pochopena“ atd.

Očekávejte nepřekládaná slova

Toto je doporučené vodítko, které se dosud nestalo standardem ve vývoji MediaWiki

Není neobvyklé, že správná počítačová jména, názvy značek, „atd.“ v angličtině nejsou přeložena a namísto toho jsou považována za slova výpůjčená nebo cizí slova. V posledně uvedeném případě mohou někteří zvláště nároční překladatelé označit HTML značkami taková slova, že patří do jiného jazyka, například <span lang="en" xml:lang="en"></span>.

Možná budete chtít zvážit, zda obsluha výstupu zpráv projde takovým značením i přes zjevná bezpečnostní rizika.

Povolit vysvětlující vložené značení

Toto je doporučené vodítko, které se dosud nestalo standardem ve vývoji MediaWiki

V cílových jazycích jsou někdy zkratky, technické termíny nebo obecně dvojznačná slova, která nemusí nováčci okamžitě pochopit, ale jsou pro zkušené uživatele počítačů zřejmé. Aby se předešlo nepřehlednému zobrazení dlouhých vysvětlení, aniž by nováčci ztratili souvislost, mohou se překladatelé rozhodnout přidat vysvětlení jako anotaci <abbr>, kterou prohlížeče zobrazují, když na ni přejdete myší .

Například základní zpráva Mediacodeiki exif-orientation-8 o rotaci obrazu, která je v angličtině jednoduše „Rotated 90° CW“, je v marocké arabštině přeložena jako:

mḍwwer 90° <abbr title="Ĝks (ṫ-ṫijah) Ĝaqarib s-Saĝa">ĜĜS</abbr>

poskytuje:

mḍwwer 90° ĜĜS

v případě potřeby vysvětlení zkratky pro „proti směru hodinových ručiček“.

Možná budete chtít zvážit, zda obsluha výstupu vaší zprávy předá takové značení spolu s originální i když se původní zpráva nepoužívá.

V případě potřeby použijte značky <code>, <var> a <kbd>

Když mluvíte o technických parametrech, hodnotách nebo klávesových vstupech, označíte je jako takové pomocí značek HTML <code>, <var> nebo <kbd;>. Jsou tedy typograficky započteny v běžném textu. To čtenářům objasňuje jejich smysl, vyhýbá se zmatkům, chybám a nesprávným vyjádřením. Zajistěte, aby obsluha zpráv takové značení povolila.

Symboly, dvojtečky, závorky, atd. Jsou součástí zpráv

Mnoho symbolů je také lokalizovatelných. Některé skripty mají jiné druhy závorek, než má latinský skript. Dvojtečka nemusí být v některých jazycích vhodná po označení nebo výzvě k zadání. Zahrnutí těchto symbolů do zpráv pomáhá vytvářet lepší a méně anglocentrické překlady a také snižuje nepořádek kódu.

Například existují různé konvence uvozovek používané v «norštině», »švédštině», »dánštině«, „němčině“ a 「japonštině」. [3]

Pokud potřebujete zabalit nějaký text do lokalizovaných závorek, závorek nebo uvozovek, můžete použít závorky parentheses ($1) nebo brackets ⧼bracket⧽ nebo quotation-marks (uvozovky) ⧼quotation-mark⧽ zprávy jako:

wfMessage( 'parentheses' )->rawParams( /* text to go inside parentheses */ )->escaped()
wfMessage( 'brackets' )->rawParams( /* text to go inside brackets */ )->escaped()
wfMessage( 'quotation-marks' )->rawParams( /* text to go inside quotation marks */ )->escaped()

Nečekejte, že symboly a interpunkce přežijí překlad

Jazyky psané zprava doleva (na rozdíl od angličtiny) obvykle zaměňují symboly šipek, které jsou prezentovány s odkazy „next“ a „previous“, a jejich umístění vzhledem k textu zprávy může nebo nemusí být obráceno. Ellipsis může být přeložen do „“ atd. “Nebo do slov. Otazníky, vykřičníky, dvojtečky budou umístěny jinak než na konci věty, zobrazí se dvakrát nebo vůbec ne. V důsledku toho vždy zahrňte všechny do textu vašich zpráv a nikdy se je nepokoušejte vkládat programově.

Použijte bodky

Pisatel ukončuje normální věty tečkami. To je často jediný ukazatel, kdy překladatel ví, že se nejedná o titulky nebo položky seznamu. Což může být nutné přeložit odlišně.

Spojovací kotvy

Wikitext odkazů

Spojovací kotvy lze do zpráv vkládat několika způsoby:

  1. přes wikitext: … [[a wiki page|anchor]] …,
  2. přes wikitext: … [some-url anchor] … nebo
  3. kotvený text je zpráva v oboru názvů MediaWiki. Vyhni se mu!

S překladateli je často obtížné nebo nemožné se domlouvat, vyhněte se fragmentovaným nebo 'zmatečným' zprávám také zde. Ujistěte se, že "some-url" neobsahuje mezery.

Použijte smysluplné odkazové kotvy

Dávejte pozor na jejich znění. Spojovací kotvy hrají důležitou roli při hodnocení stránek ve vyhledávačích - jak propojená slova, tak cílová kotva. Ujistěte se, že kotva dobře popisuje cílovou stránku. Vždy se vyhýbejte běžným a obecným slovům. Například „Click here“ je absolutně bezvýznamná kotva, [4], protože cílové stránky nejsou téměř nikdy „o kliknutí“. Nezadávejte kotvu ani do vět kolem odkazů, protože „zde“ není místo, na které by bylo možné kliknout. Místo toho použijte přesná akční slova, která sdělí, k čemu se uživatel dostane, když následuje odkaz, například „Můžete, pokud si budete přát, aktualizovat soubor.“

Viz také Help users predict where they are going (Pomozte uživatelům předvídat, kam směřují) a Navigace do tajemného jádra.

Vyhněte se žargonu a slangu

Vyhněte se žargonu vývojářů a uživatelů ve zprávách. Kdykoli je to možné, pokuste se použít co nejjednodušší jazyk. Pokud chcete uživateli oznámit, že se něco stalo nebo nestalo, vyhněte se slovům „úspěch“, „úspěšně“, „selhání“, „došlo k chybě“. Vyplývá to z toho, že vývojáři vidí všechno jako pravdivé nebo nepravdivé, ale uživatelé obvykle jen chtějí vědět, co se ve skutečnosti stalo nebo ne, a co by s tím měli dělat (pokud vůbec). Tak:

  • "Soubor byl úspěšně přejmenován" -> "Soubor byl přejmenován"
  • "Přejmenování souboru se nezdařilo" -> "Soubor s tímto názvem již existuje. Vyberte jiné jméno."

Jedna věta na řádek

Toto je doporučené vodítko, které se dosud nestalo standardem ve vývoji MediaWiki

Zkuste jednu větu nebo podobný blok v jednom řádku. Pomáhá to porovnávat zprávy v různých jazycích a může být použito jako nápověda pro segmentaci a zarovnání v překladových pamětech.

Buďte si vědomi zalomení mezer a řádků

Lokalizované zprávy MediaWiki se obvykle upravují v rámci wiki. Buď pomocí operací wiki na live wiki nebo překladateli na translatewiki.net. Měli byste si být vědomi toho, jak mezery, zejména na začátku nebo na konci vaší zprávy, ovlivní editory:

  • Spaces and line breaks (new lines) at the end of the message are always automatically removed by the wikitext editor. Your message must not end with a space or line break, as it will be lost when it's edited on the wiki.
  • Spaces and line breaks at the beginning are not automatically removed, but they are likely to be removed by accident during editing, and should be avoided.

Spusťte a ukončete svou zprávu aktivním textem. Pokud potřebujete nový řádek nebo zalomení odstavce, kód by se měl zadávat přidáním do textu.

There are some messages which require a space at the end, such as 'word-separator' (which consists of just a space character in most languages). To support such use cases, the following HTML entities are allowed in messages and transformed to the actual characters, even if the message otherwise doesn't allow wikitext or HTML formatting:[5]

On a related note, any other syntax elements affected by pre-save transforms also must not be used in messages, as they will be transformed when the message is edited on the wiki.

Použít standardní velká písmena

Velká písmena poskytují překladatelům informace o tom, co překládají, jako jsou jednotlivá slova, položky seznamu nebo nabídky, fráze nebo celé věty. Při hodnocení vašich stránek ve vyhledávačích můžou hrát roli také správná (standardní) velká písmena. MediaWiki používá ukázkovou větu (The quick brown fox jumps over the lazy dog (Rychlá hnědá liška přeskočí přes líného psa)) ve zprávách rozhraní.

Vždy pamatujte, že mnoho systémů psaní nemá velká písmena a některé systémy je používají odlišně od angličtiny. Nepoužívejte proto ALL-CAPS pro zdůraznění. Použijte CSS nebo HTML <em> nebo <strong> níže: Use CSS, or HTML <em> or <strong> per below:

Důraz

V normálním textu by zdůraznění, jako například tučné nebo kurzíva a podobné, měly být součástí textů zpráv. Místní konvence o důrazu se často liší, zejména některé asijské skripty mají své vlastní. Překladatelé musí být schopni přizpůsobit důraz na své cílové jazyky a oblasti. Zkuste ve svém uživatelském rozhraní použít "<em>" a "<strong>" a povolit zvýraznění na základě jazyka nebo skriptu.

V moderních způsobech zobrazení anglických a evropských stylů je důraz využíván méně. Sdělte to ve své dokumentaci se zprávou. Může poskytnout cenné rady při překládání. Důraz může a měl by být použit v případě potřeby v jiných kulturních kontextech za předpokladu, že o tom budou překladatelé vědět.

Přehled lokalizačního systému

Aktualizace lokalizace

Jak je uvedeno výše, překlad se děje na translatewiki.net a jiné systémy nejsou doporučovány. Zde je přehled práce na vysoké úrovni pracovního postupu aktualizace lokalizace:

  • Vývojáři přidávají nebo mění systémové zprávy .
  • Uživatelé překládají nové nebo změněné systémové zprávy na translatewiki.net.
  • Automatické nástroje exportují tyto zprávy, vytvářejí „nové verze“ souborů zpráv, které obsahují přidané nebo aktualizované zprávy, pro jádro i rozšíření, a váží je ke git.
  • Wiki pak mohou stahovat aktualizované systémové zprávy z úložiště git.

Projekty Wikimedia a jakékoli jiné wiki mohou okamžitě a automaticky profitovat z lokalizačních prací díky rozšíření LocalisationUpdate (Rozšíření: Aktualizace lokalizace).[6] Porovnává nejnovější anglické zprávy s anglickými zprávami ve vývoji. Pokud nejsou stejné, produkční překlady jsou aktualizovány a zpřístupněny uživatelům.

Jakmile jsou překlady v systému pro správu verzí, má nadace Wikimedia Foundation každodenní úkol. Aktualizovat úložiště nebo klon úložiště rozšíření. Toto bylo poprvé zavedeno v září 2009.[7]

Protože změny na translatewiki.net jsou denně zasílány do kódu, znamená to, že každá změna zprávy může být, za pár dní bez jakéhokoli ručního zásahu nebo traumatické aktualizace kódu, potenciálně aplikována na všechny stávající instalace MediaWiki.

Jak vidíte, jedná se o proces s několika kroky. Postupem času jsme zjistili, že se může mnoho věcí pokazit. Pokud se domníváte, že je proces přerušen, nezapomeňte to nahlásit na naší ohlašovací stránce nebo vytvořit novou chybu na Phabricator. Vždy nezapomeňte popsat přesné pozorování.

Vyřizování žádostí o podporu

Hlavní stránka: translatewiki:Translating:Localisation for developers.

Překladatelé mohou mít dotazy týkající se některých zpráv, které vytvoříte. Translatewiki.net poskytuje systém žádost o podporu, která umožňuje překladatelům zeptat se vás, vlastníka projektu, na otázky týkající se zpráv, aby je bylo možné lépe přeložit. Tento krátký seminář (tutoriál) vás provede pracovním postupem zpracování požadavků na podporu translatewiki.net.

Zdroje zpráv

Kód vyhledá systémové zprávy z těchto zdrojů:

  • Jmenný prostor MediaWiki. Umožňuje wiki přijímat nebo potlačovat všechny své zprávy, když se standardní zprávy nehodí nebo nejsou žádoucí (viz starý místní překladový systém).
    • MediaWiki:Message-key je výchozí zpráva,
    • MediaWiki:Message-key/language-code je zpráva, která se použije, když uživatel vybere jiný jazyk, než je výchozí jazyk wiki.
  • Ze souborů zpráv:
    • Jádro MediaWiki samotné a nejvíce aktuálně udržovaná rozšíření používají soubor v jazyce s názvem zyx.json, kde zyx je kód jazyka pro daný jazyk.
    • Některá starší rozšíření používají kombinovaný soubor zpráv obsahující všechny zprávy ve všech jazycích, obvykle s názvem MyExtensionName.i18n.php.
    • Mnoho wiki Wikimedia Foundation přistupuje k některým zprávám z rozšíření WikimediaMessages , což jim umožňuje standardizovat zprávy napříč wiki WMF, aniž by je ukládaly při každé instalaci MediaWiki.
    • Několik rozšíření používá jiné techniky.

Mezipaměť

Systémové zprávy jsou jednou z nejvýznamnějších součástí MediaWiki. Především proto, že se používají v každém webovém požadavku. Soubory zpráv PHP jsou velké, protože ukládají tisíce klíčů a hodnot zpráv. Načtení tohoto souboru (a případně více souborů, pokud se jazyk uživatele liší od jazyka obsahu) vyžaduje velkou paměť a nároky na výkon. Pro snížení tohoto dopadu na výkon se používá agresivní vrstvený systém ukládání do mezipaměti.

MediaWiki obsahuje mnoho mechanismů ukládání do mezipaměti, díky nimž je kód poněkud obtížnější pochopit. Od 1.16 existuje nový systém ukládání do mezipaměti, který ukládá zprávy do mezipaměti buď do souborů .cdb , nebo do databáze. Přizpůsobené zprávy jsou ukládány do mezipaměti v souborovém systému a v memcached (nebo alternativě), v závislosti na konfiguraci.

Níže uvedená tabulka uvádí přehled příslušných nastavení:

Umístění vyrovnávací paměti $wgLocalisationCacheConf
'store' => 'db'
 
'store' => 'detect'
(výchozí)
'store' => 'files'
 
'store' => 'array'
(experimentální od MW ≥ 1,26)
$wgCacheDirectory = false
(default)
l10n cache table l10n cache table chyba (nedefinovaná cesta) error (nedefinovaná cesta)
= path l10n cache table lokální souborový systém (CDB) lokální souborový systém (CDB) lokální souborový systém (pole PHP)
MediaWiki versions:
1.27.0 – 1.27.2

Gerrit #Id3e2d2

V MediaWiki 1.27.0 a 1.27.1 byla autodetekce změněna tak, aby upřednostňovala backend souboru. V případě, že code>'store' => 'detect' (výchozí), je backend souboru použit s cestou z $wgCacheDirectory . Pokud tato hodnota není nastavena (což je výchozí hodnota), použije se dočasný adresář určený operačním systémem. Nelze-li zjistit dočasný adresář, použije se jako záložní zdroj backend databáze. Toto bylo vráceno z 1.27.2 a 1.28.0 kvůli konfliktu souborů na sdílených hostitelích a problémech se zabezpečením (viz T127127 a T161453).

Funkce backtrace

Pro lepší vizuální zobrazení úrovní ukládání do mezipaměti je zde funkce backtrace o tom, jaké metody se nazývají při načítání zprávy. Vysvětlení jednotlivých úrovní viz níže.

  • Message::fetchMessage()
  • MessageCache::get()
  • Language::getMessage()
  • LocalisationCache::getSubitem()
  • LCStore::get()

Mezipaměť zpráv

Třída MessageCache je nejvyšší úroveň ukládání zpráv do mezipaměti. Volá se ze třídy Message a vrací konečný hrubý obsah zprávy. Tato úroveň zpracovává následující logiku:

Poslední odrážka je důležitá. Language fallbacks umožňuje MediaWiki ustoupit na jiném jazyce, pokud originál neobsahuje zprávu, o kterou se žádá. Jak je uvedeno v následující části, k většině jazykových nouzových rozlišení dochází na nižší úrovni. Pouze úroveň MessageCache v databázi kontroluje přepsané zprávy. Zde se provádí integrace přepsaných zpráv z databáze do záložního řetězce. Pokud databázi nepoužíváte, lze celou úroveň deaktivovat.

Lokalizační cache

Viz LocalisationCache.php

LCStore

Třída LCStore je pouze back-end implementace používaná třídou LocalisationCache pro skutečné ukládání do mezipaměti a načítání zpráv. Stejně jako třída BagOStuff, která se používá pro obecné ukládání do mezipaměti v MediaWiki, existuje řada různých typů mezipaměti (konfigurovaných pomocí $wgLocalisationCacheConf ):

  • "db" (výchozí) - ukládá zprávy do databáze
  • "file" (výchozí, pokud je nastaven $wgCacheDirectory) - používá CDB k ukládání zpráv do mezipaměti v místním souboru
  • "accel" - k ukládání dat se používá APC nebo jiná mezipaměť operačního kódu

Možnost „file“ je používána nadací Wikimedia Foundation. Je doporučována, protože je rychlejší než přechod do databáze a spolehlivější než mezipaměť APC. Zejména proto, že APC je nekompatibilní s PHP verze 5.5 nebo novější.

Licence

Jakékoli úpravy provedené v jazyce musí být licencovány podle podmínek GNU General Public License, které mají být zahrnuty do softwaru MediaWiki. Další rozšíření mohou podléhat různým jiným licencím.

Starý místní překladový systém

S MediaWiki 1.3.0 byl vytvořen nový systém pro lokalizaci MediaWiki. Místo úpravy jazykového souboru a žádání vývojářů, aby použili změnu, mohli uživatelé upravovat řetězce rozhraní přímo z jejich wiki. Tento systém se používá od srpna 2005. Lidé najdou zprávu, kterou chtějí přeložit. V Special:AllMessages upraví příslušný řetězec v oboru názvů MediaWiki:. Po úpravě jsou tyto změny aktivní. Již není třeba žádat o aktualizaci a čekat, až vývojáři zkontrolují a aktualizují soubor.

Systém je skvělý pro projekty Wikipedie. Vedlejším účinkem je však to, že jazykové soubory MediaWiki dodávané se softwarem již nejsou zcela aktuální a pro vývojáře je těžší udržovat soubory na meta v synchronizaci se soubory skutečných jazyků.

Protože výchozí jazykové soubory neposkytují dostatek přeloženého materiálu, čelíme dvěma problémům:

  1. Nové projekty Wikimedia vytvořené v jazyce, který nebyl dlouho aktualizován, vyžadují úplné přepracování rozhraní.
  2. Ostatní uživatelé MediaWiki (včetně projektů Wikimedia ve stejném jazyce) zůstávají s nepřekládanými rozhraními. To je obzvláště nešťastné pro menší jazyky, které nemají mnoho překladatelů.

Toto už není tak velký problém, protože translatewiki.net je propagován prominentně a používají ho téměř všechny překlady. Místní překlady se někdy odehrávají, ale jsou silně odrazovány. Místní zprávy musí být většinou smazány, přesouvat příslušné překlady do translatewiki.net a ponechat na wiki pouze přizpůsobení specifické pro daný web. Existuje obrovské množství nevyřízených položek, zejména ve starších projektech. this tool tento nástroj pomáhá s čištěním.

Řízení centralizovaných a synchronizovaných zpráv

Anglické zprávy jsou velmi zřídka synchronizovány s kódem. Zkušenost ukázala, že je vhodné mít všechny anglické zprávy na jednom místě. Revizi anglického textu lze provést bez odkazu na kód, stejně jako překlad. Programátoři někdy dělají velmi špatný výběr výchozího textu.

Dodatek

Co lze lokalizovat

Na MediaWiki lze lokalizovat tolik věcí, že ne všechny jsou přímo k dispozici na translatewiki.net: viz translatewiki:Translating:MediaWiki. Pokud něco vyžaduje zásah vývojáře do kódu, můžete nahlásit chybu na Phabrikeru nebo když nevíte přesně co dělat, zeptat se na translatewiki:Support (podpora).

Graf jazyka
  • Příbuzné jazyky (tj. další víceméně příbuzné jazyky, které se mají použít, když překlad není k dispozici. Místo výchozího záložního jazyka, kterým je angličtina)
  • Směrování (zleva doprava nebo zprava doleva, RTL)
  • Směrová značka v závislosti na RTL
  • Šipka v závislosti na RTL
  • Jazyky, kde nelze použít kurzívu
  • Formátování čísel (čárkami, tj. Přidávání nebo nečíslování oddělovačů; transformace číslic; oddělovače transformace) [8]
  • Zkrácení (vícebajt)
  • Gramatické převody pro skloňující jazyky
  • Plurální transformace
  • Formátování časů vypršení platnosti [clarification needed]
  • Segmentace rozdílů (čínština)
  • Převod na varianty jazyka (mezi různými pravopisy nebo skripty)
  • Možnosti uživatelských preferencí pro konkrétní jazyk
  • Odkaz a předpona odkazu, eg: [[foo]] panel Toto jsou písmena, která mohou být přilepena za / před uzavírací / otevírací závorky wiki odkazu, ale na obrazovce jsou zobrazená, jako by byla součástí odkazu (tj. kliknutí a ve stejné barvě). Ve výchozím nastavení je odkazová trasa "a-z"; možná budete chtít přidat do seznamu zvýrazněná nebo ne latinská písmena použitá vaším jazykem.
  • Kód jazyka (nejlépe používaný podle nejnovějších RFC ve standardu BCP 47, v současné době RFC 5646, s přidruženou databází IANA. Vyhněte se zastaralým, starým a soukromým kódům: podívejte se na to, co znamenají v normě ISO 639, a vyhněte se kódům přiřazeným souborům / rodinám jazyků v normě ISO 639-5 a kódům ISO 639, které nebyly importovány do databáze IANA pro BCP 47)
  • Typ zvýraznění
  • Přípona Cite obsahuje speciální soubor stránky pro každý jazyk, cite_text-zyx pro kód jazyka zyx.

Úhledná funkčnost:

  • I18N sprintfDate
  • Římské číselné formátování

Aliasy jmen jmenného prostoru

Aliasy jmen jmenného prostoru jsou další názvy, které lze použít k adresování existujících jmenných prostorů. Jsou zřídka potřebné. Obvykle způsobují zmatek ve stávajících wiki.

Aliasy jmen jmenného prostoru potřebujete:

  1. Pokud má jazyk pravopisné varianty jmenných prostorů a vy chcete, aby editoři některé tyto varianty mohli používat. Varianty jsou volitelné v uživatelských preferencích. Uživatelé vždy vidí svou vybranou variantu. S výjimkou wikitextu. Při úpravách nebo vyhledávání lze použít libovolnou variantu.
  2. Když se změní existující jazyk wiki, ustupující jazyk(y) nebo lokalizace, změní se některé názvy jmenného prostoru. Aby nedošlo k přerušení odkazů již existujících na wiki, které používají staré názvy jmenných prostorů, je třeba při jejich změně nebo změně názvu přidat každý ze změněných předchozích jmen jmenného prostoru do jeho aliasu jmenného prostoru jmen.

Obecná anglická jména oboru názvů jsou ve všech lokalizacích vždy uvedena jako aliasy jmen jmenného prostoru, takže je nemusíte přidávat a neměli byste je přidávat.

Aliasy nelze překládat na translatewiki.net, ale lze si je tam vyžádat nebo na bugzilla: viz aliasy jmenných prostorů.

Regionální nastavení

Některá jazyková nastavení se liší napříč geografiemi. MediaWiki nemá koncept regionu. Má pouze jazyky a jazykové varianty.

Tato nastavení je třeba jednou nastavit jako výchozí jazyk. Později je jednotlivá wiki mohou změnit podle svých přání ve své konfiguraci.

Formáty času a datumu

Čas a data jsou zobrazeny na zvláštních stránkách. Výchozí formát času a data se používá pro podpisy, takže by měl být nejpoužívanějším a nejrozšířenějším formátem pro uživatele tohoto jazyka. Výchozí formát se zobrazí také anonymním uživatelům. Registrovaní uživatelé si mohou ve svých preferencích zvolit jiné formáty.

Pokud jste obeznámeni s formátem time() v PHP, můžete se pokusit vytvořit formáty sami. MediaWiki používá podobný formátovací řetězec s některými dalšími funkcemi. Pokud nerozumíte předchozí větě, je to v pořádku. Můžeme uvést seznam příkladů pro vývojáře .

Stará tlačítka panelu nástrojů pro úpravy okna

Nesmí být zaměňován s mnohem běžnějším WikiEditor "pokročilým panelem nástrojů", který má podobné funkce.

Když je editována stránka wiki a uživatel ji povolil ve své Special:Preferences, se nad textovou oblastí zobrazí sada ikon, kde lze editovat. Tlačítka panelu nástrojů lze nastavit [1], ale nejsou k dispozici žádné zprávy. Potřebujeme sadu souborů .png o správné velikosti. Mnoho vzorků lze nalézt v commons:Category:ButtonToolbar.Je zde obrázek prázdného tlačítka, od kterého lze začít.

To lze provést pouze v případě, že je váš jazyk již v MediaWiki povolen, což obvykle znamená, že byla přeložena větší část jeho zpráv; jinak musíte jen počkat a udělat to později.

Chybí

Chybí část o změnách v systému i18n souvisejících s rozšířeními. Formát byl standardizován a zprávy se automaticky načítají.

Viz Zdroje zpráv.

Internacionalizace externích nástrojů

Pro usnadnění internalizace a lokalizace externích nástrojů, jako jsou například nástroje umístěné v Toolforge , můžete použít [bankovní knihovnu https://github.com/wikimedia/banana-i18n]. Umožňuje vám použít několik kouzelných slov:

  • {{PLURAL:$1|pluralform1|pluralform2|...}}
  • {{GENDER:$2|his|her}}
  • {{grammar:genitive|$1}}
  • {{bidi:$1}}.

Odkazy

  1. https://gerrit.wikimedia.org/r/211677
  2. http://dev.w3.org/csswg/css3-writing-modes/
  3. w:Quotation_mark#Summary_table
  4. http://www.w3.org/QA/Tips/noClickHere
  5. https://github.com/wikimedia/mediawiki/blob/REL1_34/includes/cache/MessageCache.php#L887
  6. Které funguje prostřednictvím lokalizační mezipaměti a například na projektech Wikimedia ji aktualizuje denně; viz také technické podrobnosti o konkrétní implementaci.
  7. LocalisationUpdate update; LocalisationUpdate is live.
  8. Jsou konfigurovány podle gramatiky v příslušném jazyce language/classes/LanguageXx.php nebo language/messages/MessagesXx.php souborů.

Viz též