Osvědčené postupy pro vývoj aplikací připravených pro svět
Tato část popisuje osvědčené postupy, které je potřeba dodržovat při vývoji aplikací připravených pro svět.
Osvědčené postupy globalizace
Interně nastavte kódování Unicode vaší aplikace.
K manipulaci s daty a formátování dat použijte třídy pracující s jazykovou verzí poskytovanou oborem System.Globalization názvů.
- K řazení použijte SortKey třídu a CompareInfo třídu.
- Pro porovnání řetězců použijte CompareInfo třídu.
- Pro formátování data a času použijte DateTimeFormatInfo třídu.
- Pro číselné formátování použijte NumberFormatInfo třídu.
- Pro gregoriánské a negregoriánské kalendáře použijte Calendar třídu nebo jednu z konkrétních implementací kalendáře.
V odpovídajících situacích použijte nastavení vlastnosti jazykové verze poskytované System.Globalization.CultureInfo třídou. CultureInfo.CurrentCulture Vlastnost slouží k formátování úkolů, jako je datum a čas nebo číselné formátování. CultureInfo.CurrentUICulture Pomocí vlastnosti můžete načíst prostředky. Všimněte si, že
CurrentCulture
vlastnosti aCurrentUICulture
vlastnosti lze nastavit pro každé vlákno.Povolte aplikaci čtení a zápisu dat do a z různých kódování pomocí tříd kódování v System.Text oboru názvů. Nepředpokládejte data ASCII. Předpokládejme, že mezinárodní znaky budou zadány všude, kde uživatel může zadat text. Aplikace by například měla přijímat mezinárodní znaky v názvech serverů, adresářích, názvech souborů, uživatelských jménech a adresách URL.
Při použití UTF8Encoding třídy z bezpečnostních důvodů použijte funkci detekce chyb, kterou tato třída nabízí. Chcete-li zapnout funkci detekce chyb, vytvořte instanci třídy pomocí konstruktoru, který přebírá
throwOnInvalidBytes
parametr a nastaví hodnotu tohoto parametru natrue
.Kdykoli je to možné, zpracujte řetězce jako celé řetězce místo jako řady jednotlivých znaků. To je zvlášť důležité při řazení nebo hledání podřetěžců. Tím zabráníte problémům spojeným s parsováním kombinovaných znaků. Pomocí třídy můžete také pracovat s jednotkami textu, nikoli s jedními znaky System.Globalization.StringInfo .
Zobrazí text pomocí tříd poskytovaných oborem System.Drawing názvů.
Pro konzistenci napříč operačními systémy nepovolujte přepsání CultureInfouživatelských nastavení .
CultureInfo
Použijte konstruktor, který přijímáuseUserOverride
parametr a nastaví ho nafalse
.Otestujte funkčnost aplikace na mezinárodních verzích operačního systému pomocí mezinárodních dat.
Pokud je rozhodnutí o zabezpečení založeno na výsledku operace porovnání řetězců nebo změny velikosti písmen, použijte operaci řetězce bez rozlišování jazykové verze. Tento postup zajistí, že výsledek nebude ovlivněn hodnotou
CultureInfo.CurrentCulture
. Podívejte se na část Porovnání řetězců, která používají aktuální jazykovou verzi , v části Osvědčené postupy pro použití řetězců pro příklad, který ukazuje, jak porovnání řetězců citlivých na jazykovou verzi může vést k nekonzistentním výsledkům.
Osvědčené postupy lokalizace
Přesuňte všechny lokalizovatelné prostředky do samostatných knihoven DLL jen pro prostředky. Lokalizovatelné prostředky zahrnují prvky uživatelského rozhraní, jako jsou řetězce, chybové zprávy, dialogová okna, nabídky a vložené prostředky objektů.
Nezakódujte řetězce ani prostředky uživatelského rozhraní.
Neukládejte nelokalizovatelné prostředky do knihoven DLL jen pro prostředky. To zmást překladatele.
Nepoužívejte složené řetězce vytvořené za běhu zřetězených frází. Složené řetězce jsou obtížné lokalizovat, protože často předpokládají gramatické pořadí v angličtině, které neplatí pro všechny jazyky.
Vyhněte se nejednoznačným konstruktorům, jako je například "Prázdná složka", kde lze řetězce přeložit odlišně v závislosti na gramatických rolích součástí řetězce. Například "prázdné" může být buď sloveso, nebo adjektivní jméno, což může vést k různým překladům v jazycích, jako je italština nebo francouzština.
Nepoužívejte obrázky a ikony, které obsahují text v aplikaci. Jsou nákladné na lokalizaci.
Povolte spoustu místa pro délku řetězců, aby se rozšířilo v uživatelském rozhraní. V některých jazycích můžou fráze vyžadovat 50–75 % větší prostor, než potřebují v jiných jazycích.
System.Resources.ResourceManager Pomocí třídy můžete načíst prostředky na základě jazykové verze.
Pomocí sady Visual Studio můžete vytvářet model Windows Forms dialogová okna, aby bylo možné je lokalizovat pomocí editoru prostředků model Windows Forms (Winres.exe). Nezakódujte model Windows Forms dialogová okna ručně.
Zařiďte si profesionální lokalizaci (překlad).
Úplný popis vytváření a lokalizace prostředků najdete v tématu Prostředky v aplikacích .NET.
Osvědčené postupy globalizace pro aplikace ASP.NET
Tip
Následující osvědčené postupy jsou určené pro aplikace ASP.NET Framework. Informace o aplikacích ASP.NET Core najdete v tématu Globalizace a lokalizace v ASP.NET Core.
Explicitně nastavte CurrentUICulture vlastnosti a CurrentCulture vlastnosti ve vaší aplikaci. Nespoléhejte na výchozí hodnoty.
Všimněte si, že ASP.NET aplikace jsou spravované aplikace, a proto mohou používat stejné třídy jako jiné spravované aplikace pro načítání, zobrazování a manipulaci s informacemi na základě jazykové verze.
Mějte na paměti, že v ASP.NET můžete zadat následující tři typy kódování:
requestEncoding
určuje kódování přijaté z prohlížeče klienta.responseEncoding
určuje kódování, které se má odeslat do klientského prohlížeče. Ve většině situací by toto kódování mělo být stejné jako zadané prorequestEncoding
.- FileEncoding určuje výchozí kódování pro analýzu souborů .aspx, .asmx a .asax .
Zadejte hodnoty pro
requestEncoding
objekty , ,fileEncoding
responseEncoding
,culture
auiCulture
atributy na následujících třech místech v aplikaci ASP.NET:- V části globalizace souboru Web.config . Tento soubor je externí pro ASP.NET aplikaci. Další informace naleznete v tématu <globalizace> elementu.
- V direktivě stránky. Všimněte si, že když je aplikace na stránce, soubor už byl přečtený. Proto je příliš pozdě zadat fileEncoding a requestEncoding. Pouze
uiCulture
,culture
aresponseEncoding
lze zadat v direktivě stránky. - Programově v kódu aplikace. Toto nastavení se může u jednotlivých požadavků lišit. Stejně jako u direktivy stránky je v době, kdy je dosaženo kódu aplikace, je příliš pozdě zadat
fileEncoding
arequestEncoding
. PouzeuiCulture
,culture
aresponseEncoding
lze zadat v kódu aplikace.
Všimněte si, že hodnotu uiCulture lze nastavit na jazyk, který prohlížeč přijímá.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro