SOURCES: monodoc.desktop (NEW) - desktop file
Paweł Sakowski
pawel w sakowski.eu.org
Sob, 28 Lut 2004, 17:12:04 CET
> No i tak właśnie vfmg robi. Z tym, że przed LC_MESSAGES bierze LC_ALL, a
> po nim LANG. Nie wiem czy do końca zgodnie ze standardem, czy nie -
> dokładną obsługę zmiennych systemowych zrobię na końcu.
Zgadza się. Chodzi o ustawienie LC_MESSAGES, a algorytm ustalania jego
treści na podstawie zmiennych env jest dokładnie taki, jak napisałeś.
> Ale żeby uzyskać to 'ISO-8859-2' muszę użyć Langinfo (bo innej metody
> nie znam - jeśli ktoś zna funkcję get_encoding(język) to niech mi jak
> najszybciej ją poda). A to operuje na aktualnym locale.
Właśnie ta zależność od locale wszystko psuje, bo na jednym systemie
langinfo (dla pl_PL) zwróci ISO-8859-2 a na drugim UTF-8 (zależnie jak
kto sobie localedb wygeneruje).
> WYjściowym), to weź aktualne vfmg z CVS-u, znajdź blok rozpoczynający
> się ciągiem 'Legacy-Mixed', przeanalizuj go i podaj proof of concept,
Nie do końca poprawnym perlem:
string get_encoding($lang) { # pl_PL w cośtam.cośtam
$lang2 ~= subst($lang, s/[@.].*//); # pl_PL
$lang1 = subst($lang2, s/_.*//); # pl
if ($lang == "") return "US-ASCII";
if ($lang1 == "pl") return "ISO-8859-2";
if ($lang2 == "zh_TW") return "BIG5";
# [...] dalej wg. tabelki
# ... else
warn "Invalid language tag";
}
i w bloku Legacy-Mixed zamiast if(!$lang){}elsif{}else{} wstawiasz
$enc=get_encoding($lang).
Przekodowywanie wyjścia w twojej wersji jest OK.
Pomijam przypadek szczególny typu Name[pl_PL.Windows-1250], kiedy
kodowanie podane jest wprost -- wtedy $enc==to_po_kropce.
> Innymi słowy: skąd uzyskać informację, że [pl] oznacza ISO-8859-2?
Jedynym źródłem jest tabelka (do przeklepania) z:
http://freedesktop.org/Standards/desktop-entry-spec/0.9.4/apd.html
Żadne funkcje z glibcowo-localowe tu nie pomogą, bo nie gwarantują
zwracania dokładnie wartości opisanych tym standardem. Jak pisałem, dla
polskiego locale mogą zwracać np. UTF-8.
--
+----------------------------------------------------------------------+
| Paweł Sakowski <pawel w sakowski.eu.org> Never trust a man |
| who can count up to 1023 on his fingers. |
+----------------------------------------------------------------------+
Więcej informacji o liście dyskusyjnej pld-devel-pl