2009-11-04 15 views
11

Chcę przechowywać moje zasoby w innym formacie pliku niż .resources (w szczególności .po), więc napisałem niestandardowy zestaw zasobów z niestandardowym czytnikiem zasobów, aby je odzyskać. Stworzyłem ResourceManager za pomocą statycznej metody CreateFileBasedResourceManager, która tworzy nowe wystąpienie menedżera, który pobiera zbiory zasobów z plików w konkretnym katalogu, używając określonego zestawu zasobów (niestandardowego, który napisałem w moim przypadku), używając Name.culture.resources nazwy plików.Przedłużenie menedżera zasobów opartego na plikach C#

Chciałbym jednak zmienić konwencję nazw plików. Zauważyłem, że istnieje nadpisywalna metoda GetResourceFileName dla dokładnie tego celu. Używając reflektora zauważyłem, że konstruktor użyty przez CreateFileBasedResourceManager jest prywatny i niemożliwe jest ustawienie flagi "use files as assembled" inaczej.

Czy istnieje sposób obejścia tego, bez konieczności ponownego wdrożenia całej metody InternalGetResourceSet?

Wielkie dzięki!

+1

Czy kiedykolwiek się to sortowane? Możesz użyć refleksji wewnątrz aplikacji, aby ominąć problem "prywatnej flagi". – jcolebrand

+1

Użyłem odbłyśnika, aby po prostu skopiować implementację menedżera zasobów i zmodyfikować wszystko, czego potrzebowałem. Niezbyt elegancko, ale zadziałało. –

Odpowiedz

1

Mono ma dobre małe narzędzie, które pomaga w tym, nazywa się Msgfmt, które może być użyte do utworzenia plików .resources z katalogu .po.

Msgfmt.exe -iMessages.es.po -oMessages.es.resources 

natknąłem się na ciekawy artykuł @http://weblogs.manas.com.ar/spalladino/2009/10/01/using-gnu-gettext-for-i18n-in-c-and-asp-net/ który pomógł mi i może również pomóc zbyt ..

Jego inne podejście, ale pracował dla mnie!

+2

Dzięki za link do artykułu ... ale autor jest w rzeczywistości ja: P –

+0

Fajny artykuł ... Trzeba pamiętać ... sprawdź autora artykułu zanim zamieścisz link! –

Powiązane problemy