Multijazyčné formuláře   zodpovězená otázka

VB.NET, WinForms

Ahoj,

omlovám se pokud se zde tento problém již řešil. poté neumím hledat a omlovám se. Ale otázka je taková, pokud u formulářů vygeneruji více resx souborů = tím že postupně změním lng daného formuláře a v jednotlivých resx přeložím příslušné texty, bude potom aplikace fungovat podle zvoleného jazyka, nebo musí být texty v samostatných souborech.

Děkuji za radu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děláte chybu už jen v tom, že ručně zasahujete do Visual Studiem automaticky generovaných resx souborů. Správný postup by měl vypadat asi takto:

1) Zvolte neutrální kulturu pro svou aplikaci (ve většině případů angličtina) a v této kultuře nastavujte veškeré lokalizovatelné vlastnosti ovládacích prvků (popisky, obrázky, texty atd.) přímo ve Visual Studiu v okně Properties (ne ruční editací resx).

2) Zvolte kulturu pro kterou chcete vytvořit lokalizaci a opakujte krok 1 s tím, že budete vše zadávat v jazyce, ve kterém chcete lokalizovat.

Resources neutrální kultury budou zkompilovány do hlavní assembly aplikace a resources pro dané kultury budou zkompilovány do tzv. Satellite Assemblies a umístěny do podsložek podle normalizovaného názvu kultury.

Které resources budou použité za běhu aplikace záleží na kultuře uživatelského rozhraní operačního systému nebo na nastavení vlastnosti CultureInfo.CurrentUICulture. Rozlišujte mezi kulturou pro uživatelské rozhraní a kulturou pro formátování dat.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Tohle téma mě taky zajímá, takže i já díky za odpověď :-)

Ale ještě by mě zajímalo, jak vyřešit lokalizaci hlášek v msgboxech a jiných textů, které jsou přímo v kódu. Samozřejmě se to dá řešit ručně z nějakého souboru nebo tak, ale doufám, že by na to mohla být taky nějaká pomůcka nebo automatizace.

Díky,

Lukas

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Lokalizace řetězců přímo v textu se řeší také pomocí resources. Z kódu se na ně můžete odkazovat přímo:

Dim text As String = JmenoProstredku.Hodnota

JménoProstredku bývá konkrétní jméno souboru (bez přípony resx), například Resources1.

O žádné utilitě na nahrazování nevím, na takové věci by se mělo myslet již od začátku a texty do resources odkazovat při každém výskytu - v kódu by neměl být žádný přímý text. Možná na to ale bude nějaká utilitka, nevím.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Textové řetězce stačí přidat pod stejným klíčem do všech resource souborů (v příslušných jazykových verzích) a potom se na ně odkazovat pomocí My.Resources.Název. Jazyk textového řetězce bude automaticky vybrán podle výše uvedených kritérií.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Resources soubory ovšem musí být na úrovni GlobalResources...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Co tím konkrétně myslíte? Pokud ve Visual Basicu přidáte jakékoliv textové řetězce na kartě Resources ve vlastnostech projektu, Visual Studio automaticky vytvoří příslušné vlastnosti ve jmenném prostoru My.Resources a jejich viditelnost může být buď Public nebo Friend což je v obou případech vidět v rámci celého projektu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback