Tema: Re: .net lokalizacija [solved]
Autorius: Jornada Del Muerto
Data: 2011-01-02 17:05:18
> a siaip, jei teisingai pamenu, tai gal ne tik viena ale ir dvi funkcijos
> buvo skirtos kalbai keisti;
> nepamenu tiksliai
Sveiks,
Na taip kas liecia:
1. ComponentModel ir PropertyGrid tai visumoje reikejo susikurti savo DisplayNameAttribute ir DescriptionAttribute veldint nuo esamu System.ComponentModel, tai man ne idealus sprendimas, nes rasant headerius negalima nurodyt nieko isskyrus konstantas, kas padaro sias klases ne universaliom, nes viduje ju tenka dirbti su Properties.Resources.ResourceManager kur tas resursas yra konkretus to assembly resursas, jei tas klases apsirasau kazkokiam lib'e tai jos dirbs tik su to assembly resursu failu.
Jeigu turiu Resources.resx (tipo neutral, pvz.english) irasa pvz:
SomeDialogName - "Hello!", o Resources.lt.resx tai butu "Sveiki!";
tai aprasant toki property rasosi:
[MyCustomDisplayName("SomeDialogName")]
public string Hello
{
get .. set...
}
2. Ko as butent ir klausiau pirmame paciame post'e - kaip perjungt kazkokia kalba - darosi labai paprastai:
// LT Localization
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo ("lt");
Ir viskas persijungs pagal lt koda, ta prasme jei assembly tures Resources.lt.resx tai dirbs su jais, jei ten neras tokio string tai manau ims is Resources.resx ir viskas.
PS. Dabar kaip ir viskas veikia, gal kiek nepatiko negalejimas sukurt universalios vienos klases kuri tiktu bet kokiam assembly, bet jeigu padarius atskira lokalizacijos dll tai gal irgi visai nieko sprendimas butu, ta prasme tik jame laikant visus stringus kiek tik naudojasi kur nors ir po to visur naudoti is jo juos ir tik ten tureti DisplayNameAttribute ir DescriptionAttribute, tai viens bent is galimu sprendimu.
JDM.