2009-05-22 12 views
22

Buduję aplikację C#, która prawdopodobnie będzie zawierała kilka plików zasobów do przechowywania ciągów do wykorzystania w tłumaczeniu języka. Próbuję wymyślić konwencję nazewnictwa dla kluczy w moich plikach resouce. Czy ktoś zmierzył się z tym przede mną?Plik zasobów (.resx) Konwencje nazewnictwa kluczy?

Odpowiedz

11

Wystarczy użyć konwencji nazewnictwa Pascal. Nie przypisuj klucza do modułu ani klasy. Uogól go, aby mógł być ponownie użyty.

Np ReadWriteWarningMessage

kropka oddziela konwencja działa dobrze dla pozycji menu. Ale co z łańcuchami, które są generowane dynamicznie lub wiadomościami użytkowników.

0

Jeśli masz Nazwa Wartość pair w zasobach jak

CloseConfirmation - Czy chcesz, aby zamknąć okno bez zapisywania?

Dodaj nową klasę o nazwie Wiadomości.

public static class Messages 
{ 
    public const String CloseConfirmation = "CloseConfirmation"; 
    public static String GetMessage(String messageId) 
    { 
     return //your namespace//.Properties.Resources.ResourceManager.GetString(messageId); 
    }} 

oraz dostęp używać

MessageBox.Show(Messages.GetMessage(Messages.CloseConfirmation)); 

nadzieję, że to pomoże.

+1

Nie chodzi o konwencje nazw kluczy, ale o strategie dostępu do wiadomości w plikach zasobów. – Juri

+0

Dzięki Prajeesh, mogę uzyskać dostęp do zasobu bez problemu. Mój problem polega jednak na tym, że mogę mieć kilkaset kluczy i chcę mieć łatwy sposób na ich sprawdzenie. Natknąłem się na konwencję hoerarchiczną, taką jak: Menu.File.Open jako przykład dla podpisu menu. Podoba mi się to podejście, ale ułamki dziesiętne nie są zaimplementowane przy użyciu silnie wpisanych zasobów (którymi jestem). W każdym razie dzięki... – Dawsy

4

Czy brałeś pod uwagę podkreślenia, takie jak Menu_File_Open lub coś w rodzaju Place_StringDescription? Obecnie używam schematu, w którym zwykłe rzeczy idą do Common_ jak Common_PressHereTo i widok konkretnych przejść do ich odpowiednich miejsc, takich jak MainMenu_FileOpen. Ogólnie przed podkreśleniem wpisz, gdzie pojawia się zasób i po podkreśleniu tekstu opisowego.

2

Próbuję zorganizować go podobnie do przestrzeni nazw, których używam do układu struktury programu. Więc jeśli masz MyCompany.MyProduct.MyModule, łańcuchy w tym module to MyModule_Blah_Blah. W ten sposób są unikalne w ramach całego produktu.