Użyłem PO do zarządzania projektem .Net po.pliki Resx zaczęły wymykać się spod kontroli. Użyłem go "jako formatu wyodrębniania, takiego jak XLIFF" (patrz Yves comment). Nasze istniejące pliki .resx zostały wyeksportowane/scalone raz w jeden plik .po na język, który stał się naszym autorytatywnym plikiem językowym, z którego wszystkie pliki resx byłyby automatycznie generowane.
Projekty, którymi się zajmuję nie są ASP, więc nie wiem o pakiecie wspomnianym przez mcw0933, ale implementacja Mono w resgen.exe ma pewną prostą po < => zdolność konwersji resx. Jednakże, aby zachować istniejące komentarze i automatycznie dodać oryginalny tekst jako dodatkowe komentarze, rozszerzyłem narzędzie do konwersji mono do punktu, w którym ten, którego używam, jest w zasadzie przepisywany.
I put the extended .po <=> .resx converter on github.
Jeśli chodzi o wybór .po do zarządzania tłumaczeniami projektu C#, to .po jest proste i przyjazne, ale są pewne niedogodności związane z używaniem go w sposób, który nieznacznie różni się od jego pierwotnego użycia w gettext, a ja nie Mają doświadczenie, aby powiedzieć, czy był to lepszy wybór niż Xliff, ale możliwość zarządzania tłumaczeniami i automatyzacji zadań był znacznie lepszy niż radzenie sobie z plikami resx, jak to było w przeszłości.
Drobne niedogodności z użyciem PO trochę inaczej do jego intencji:
- Ponieważ gettext używa msgstr podwoić jako pole do przechowywania oryginalnego nieprzetłumaczonej smyczkowy, musiałem zrobić resgenEx archiwizowania oryginalnego tłumaczenia ciąg do dołączony komentarz zamiast pola zaprojektowanego do tego celu.
- Niektóre narzędzia zakładają, że msgid będzie zawierać oryginalne tłumaczenie angielskie (zamiast tylko ciąg ID), co może oznaczać, że opcja automatycznego sprawdzania błędów tego narzędzia nie jest zbyt użyteczna, lub może oznaczać coś, co powoduje, że wybierasz inne narzędzie itp. Większość narzędzi nie przyjmuje jednak założenia.
- Niektóre narzędzia .po jak \ n zamiast \ r \ n
Projekt pierwotnie napisał resgenEx dla mieli dwóch .resx plików i jeden plik .isl dla każdego obsługiwanego języka, ale wkrótce będę potrzebował zarządzać wszystkimi tłumaczeniami dla projektu .Net, który ma wiele plików resx dla każdej klasy w kodzie. Kiedy tak się stanie, zdecyduję, czy powinienem dalej używać .po, czy powinienem użyć xliffa lub czegoś innego. Jeśli nadal używam .po, to posprzątam resgenEx i prawdopodobnie będę musiał dodać więcej funkcji, takich jak możliwość automatycznego dodawania prefiksów nazw zespołów i klas do msgids.
Każdy powód, dla którego nie można bezpośrednio korzystać z plików zasobów? – Oded
Chcemy użyć jednego formatu dla tłumaczeń pomiędzy różnymi projektami, które buduje nasza firma - są to projekty C# i Java, i dzielić się nimi, aby zminimalizować duplikację i dodatkowe koszty dla oddzielnych tłumaczeń dla różnych projektów. – Paul