Ik ben bezig met een applicatie waar ook wat localization voor nodig is. Ik heb een aantal text bestanden waar op een bepaalde manier de text in staat. Met behulp van een ResourceWriter heb ik hier .resources bestanden van gemaakt.
Nu wil ik deze graag in mijn project aan kunnen spreken dus ik heb ze toegevoegd aan mijn vs.net ( 2005) project en ze staan op embedded resource als build action.
Nu maak ik een resource manager aan en probeer een string uit te lezen. Het probleem is dat wanneer ik de resourcemanager vertel dat hij de resources uit de assembly moet gebruiken dat de localization niet meer werkt. Vertel ik hem dat hij dezelfde bestanden van de hd moet gebruiken dan werkt het wel gewoon.
Als ik hetzelfde probeer met 2 resx bestanden die in visual studio zelf gemaakt zijn dan werkt het wel gewoon goed.
Ik gebruik de volgende code om gelocaliseerde text uit de assembly te halen.
Als ik de eerste uitgecomentarieerde regel gebruik om de Resourcemanager te instantieeren gebruik dan werkt het allemaal goed. Als ik echter de resources uit de assembly probeer te laden dan krijg ik altijd de text van de default culture.
Ik heb de volgende resource files in mijn project staan
1. test.resources
2. test.fr.resources
Weet iemand mischien waarom hij het niet goed wil doen. Ik heb het idee dat ik iets heel simpels over het hoofd zie.
Nu wil ik deze graag in mijn project aan kunnen spreken dus ik heb ze toegevoegd aan mijn vs.net ( 2005) project en ze staan op embedded resource als build action.
Nu maak ik een resource manager aan en probeer een string uit te lezen. Het probleem is dat wanneer ik de resourcemanager vertel dat hij de resources uit de assembly moet gebruiken dat de localization niet meer werkt. Vertel ik hem dat hij dezelfde bestanden van de hd moet gebruiken dan werkt het wel gewoon.
Als ik hetzelfde probeer met 2 resx bestanden die in visual studio zelf gemaakt zijn dan werkt het wel gewoon goed.
Ik gebruik de volgende code om gelocaliseerde text uit de assembly te halen.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| namespace ResourceTest { public class Program { static void Main(string[] args) { //ResourceManager m = ResourceManager.CreateFileBasedResourceManager("test", @"c:\src\tools\resourcetest\", null); ResourceManager m = new ResourceManager("ResourceTest.test", Assembly.GetExecutingAssembly()); string s = m.GetString("TestString", new CultureInfo("nl-NL")); Console.WriteLine(s); s = m.GetString("TestString", new CultureInfo("fr-FR")); Console.WriteLine(s); } } } |
Als ik de eerste uitgecomentarieerde regel gebruik om de Resourcemanager te instantieeren gebruik dan werkt het allemaal goed. Als ik echter de resources uit de assembly probeer te laden dan krijg ik altijd de text van de default culture.
Ik heb de volgende resource files in mijn project staan
1. test.resources
2. test.fr.resources
Weet iemand mischien waarom hij het niet goed wil doen. Ik heb het idee dat ik iets heel simpels over het hoofd zie.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”