The way the price is used in Osclass is by design, a choice once made and a fundamental one.
Your users seem to enter a 0 price as where they mean 'Ask me' so the first thing you need if not already in your theme is the price explanation ie. 0 = FREE / Empty = ASK and if your users are blind or just ignorant what are you going to fix?
In case you want a different price approach it is best to make these in the theme & functions.php ie. the Liath solution is doable however the category pricing is still being handled in core JS according to price design.
Here's another possible theme solution trying to help your users selecting a price:
-- * Price * ----------------------------------------------
| O Free O Ask O [ 0,00 ] [ currency dropdown ] |
-----------------------------------------------------------
OR
-- * Price * -----------------------------
| O Free |
| O Ask |
| O [ 0,00 ] [ currency dropdown ] |
------------------------------------------
OR
-- * Price * ------------
| [ price dropdown ] |
-------------------------
With the options; "Free", "Ask Seller", "Enter Price" so when the latter is selected the price input field and currency selector are displayed.
"Ask" can be set to default so it would save many of your users the extra input and making it vast impossible to post using incorrect price. There's no need to change the price logic with regard to the price input design is there?
"What" is being displayed based on user selection is handled in PO/MO files, no need to add filters really.
If you want to 'swap' '' and 0 text display you could also simply change this in PO/MO ie. the text "Ask seller" becomes "Free" and "Free" becomes "Ask seller" and ofcourse you would also have to change the price explanation for this and any related search text. This way labels are kept consistent by Osclass and users can enter a zero and see the text "Ask Seller" insetad of "Free". It is all a matter of how you want your users to "SELECT" the correct price.
You could recplace the "free" word in language files with "ask for price".
Tried that, BUT the price field is also shows at Items and the label was totally wrong to display.
Maybe i could inject a message in there, apart from the language file. Next to the Price field or above.