c # - Skift ord i ansøgningen afhængigt af sprogindstillingen

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en applikation, der er forbundet til en server. Min ansøgning skal være flersproget, så jeg har sprogfiler på min server. Jeg skal ændre sproget i mine ord til den sproglige indstilling, de vælger.


Hvad er den bedste måde at gøre dette på?
Skal jeg bruge den isolerede opbevaring?

Bedste reference


Opret et sæt Nøgle/Værdi par kendte nøgler, du vil bruge i din app, og deres værdi.


Derefter opret en Dictionary<string,string>


Derefter skal du oprette alle nøglerne og sikkerhedskopiere tekst bare i tilfælde.


Serialiser hele ordbogen i ét stykke ved hjælp af en BinarySerializer som Sharp Serializer [10]


Derefter serialize Dictionary i formularen


strings.default


Derefter skal din server returnere XML, JSON, osv. Med tasterne/værdierne og sproget.


<strings language="en-us">
<string name="start">start</string>
</strings>


serialiser dette til disk i en anden ordbog:


strings.en-us


Så når appen starter, skal du bestemme sproget, tage fat på filen fra disken, og når du skal bruge strenge, skal du indtaste dem i ordbogen. Hvis du opbevarer hele ordbogen på en gang, vil det forhindre, at du går over til disk igen og igen.


//Opret en grænseflade til dine strenge. Dette giver dig mulighed for at oprette en DesignTime-version, der ikke stole på din server/implementering.


public interface IStringDictionary
    {
        string Start { get; }
        //the rest of your strings
    }


//Opret en implementering af din ordbog.


    public class StringDictionary : IStringDictionary
    {
        private Dictionary<string, string> \_dictionary;

        public StringDictionary(string languageName = "default")
        {

            DictionaryLanguage = languageName;

        }

        public string Start
        {
            get { return \_dictionary["start"]; }
            //your predefined key here, (should probably fallback / return null, or something)
        }



        private string \_dictionaryLanguage;

        public string DictionaryLanguage
        {
            get { return \_dictionaryLanguage; }
            set
            {
                if (\_dictionaryLanguage == value) return;
                \_dictionaryLanguage = value;
                \_dictionary = LoadFromDisk("strings." + value); //create this method
            }
        }



    }


//Opret en mock version


public class MockStringDictionary : IStringDictionary

{  
     public string Start { get { return "start"; } }
}