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

  1. Interně nastavte kódování Unicode vaší aplikace.

  2. 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.
  3. 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 a CurrentUICulture vlastnosti lze nastavit pro každé vlákno.

  4. 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.

  5. 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 na true.

  6. 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 .

  7. Zobrazí text pomocí tříd poskytovaných oborem System.Drawing názvů.

  8. 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 na false.

  9. Otestujte funkčnost aplikace na mezinárodních verzích operačního systému pomocí mezinárodních dat.

  10. 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

  1. 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ů.

  2. Nezakódujte řetězce ani prostředky uživatelského rozhraní.

  3. Neukládejte nelokalizovatelné prostředky do knihoven DLL jen pro prostředky. To zmást překladatele.

  4. 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.

  5. 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.

  6. Nepoužívejte obrázky a ikony, které obsahují text v aplikaci. Jsou nákladné na lokalizaci.

  7. 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.

  8. System.Resources.ResourceManager Pomocí třídy můžete načíst prostředky na základě jazykové verze.

  9. 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ě.

  10. Zařiďte si profesionální lokalizaci (překlad).

  11. Ú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.

  1. Explicitně nastavte CurrentUICulture vlastnosti a CurrentCulture vlastnosti ve vaší aplikaci. Nespoléhejte na výchozí hodnoty.

  2. 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.

  3. 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é pro requestEncoding.
    • FileEncoding určuje výchozí kódování pro analýzu souborů .aspx, .asmx a .asax .
  4. Zadejte hodnoty pro requestEncodingobjekty , , fileEncodingresponseEncoding, culturea uiCulture 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, culturea responseEncoding 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 a requestEncoding. Pouze uiCulture, culturea responseEncoding lze zadat v kódu aplikace.
  5. Všimněte si, že hodnotu uiCulture lze nastavit na jazyk, který prohlížeč přijímá.

Viz také