W celu uzyskania rozszerzonego języka PHP content management system konieczne są tłumaczenia językowe. Badałem podejścia programistyczne do systemu tłumaczeń i uważałem, że dobrym przykładem jest Qt Linguist.Tłumaczenie na języki z nieregularnymi regułami
To Wykorzystanie przykład z dokumentacji Qt:
int n = messages.count();
showMessage(tr("%n message(s) saved", "", n));
Qt wykorzystuje znane zasady językowe w celu ustalenia, czy „message
” posiada „s
” dołączany w języku angielskim.
Kiedy przywiozłem ten przykład z mojego zespołu rozwoju, odkrył, że problem, który zagraża skuteczności rozciągliwości modelowania off z tr()
funkcji Qt.
To jest podobny przykład, z tym że coś jest teraz poważnie źle.
int n = deadBacteria.count();
showMessage(tr("%n bacterium(s) killed", "", n));
mnoga od "bacterium
" jest "bacteria
". Niewłaściwe jest dołączanie "s
".
Nie mam dużego doświadczenia z Qt Linguist, ale nie widziałem jak radzi sobie z nieregularnymi koniugacjami i formami.
Bardziej skomplikowaną frazą może być "%n cactus(s) have grown."
. Liczba mnoga powinna być "cactii
", a "have
" musi być sprzężona z "has
", jeśli jest jeden kaktus.
Możesz myśleć, że logiczną poprawką jest unikanie tych nieregularnych słów, ponieważ nie są one używane w programowaniu. Cóż, to nie jest pomocne w dwojaki sposób:
- Być może nie jest językiem, który modyfikuje rzeczowników w sposób nieregularny, choć ciąg źródłowy działa w języku angielskim, jak
"%n message(s) saved"
. W MyImaginaryLanguage, właściwy sposób tworzą ciąg może być tłumaczone „1Message zapisane”, „M2essage zapisane”, „Me3ssage zapisane” dla%n
wartości1
,2
i3
, odpowiednio, i nie Wygląda na to, że Qt Linguist ma zasady, aby sobie z tym poradzić. - Aby rozbudować system zarządzania treścią, tak jak ja, muszę się upewnić, że wszystkie typy aplikacji internetowych muszą być uwzględnione. Ktoś może zbudować role-playing game, który wymaga skonstruowania zdań w stylu "5 kaktusów urosło." "A może oprogramowanie zabezpieczające chce powiedzieć: „ClamAV znaleziono 2 wirusy.” w przeciwieństwie do „ClamAV Znaleźliśmy 2 wirusa (y).”
Po poszukiwaniach online, aby sprawdzić, czy inni programiści Qt posiada rozwiązanie tego problem i nie znalazłem żadnego, przybyłem do Stack Overflow.
chcę wiedzieć:
- Co rozszerzalny i skuteczne techniki programowania powinien być używany do przetłumaczenia ciągi z możliwych nieprawidłowych zasad?
- Co robią programiści i tłumacze Qt, jeśli napotkają problem z nieprawidłowościami?
Nie wiem nic o Qt wiem, ale być może można zakodować rozszerzenie który analizuje pojedynczej/dual/mnogiej zakończeń? 'bacteri (a/um)', '(1Message/M2essage/Me3ssage)' byłoby przykładem, który wymagałby nieco więcej pracy i byłby mniej dynamiczny. – Cyclone