Commit 13420a2febbecda902ba60a98caad412291d7d75
1 parent
3aca112b
added reporting import problems, added position/phrase selection in syntax web UI
Showing
19 changed files
with
741 additions
and
473 deletions
connections/models.py
... | ... | @@ -16,6 +16,7 @@ class Entry(models.Model): |
16 | 16 | schemata_count = models.PositiveIntegerField(null=False, default=0) |
17 | 17 | frames_count = models.PositiveIntegerField(null=False, default=0) |
18 | 18 | lexical_units_count = models.PositiveIntegerField(null=False, default=0) |
19 | + import_error = models.BooleanField(default=False) | |
19 | 20 | |
20 | 21 | class Meta: |
21 | 22 | ordering = ['name'] |
... | ... |
entries/phrase_descriptions/descriptions.py
... | ... | @@ -260,6 +260,9 @@ def make_phraseologisms(phrase, function, negativity, attrs={}, controller=None, |
260 | 260 | # TODO merge LexNP with LexPrepNP/LexPrepGerP? |
261 | 261 | if ptype == LexNP: |
262 | 262 | case = phrase._np._case._value |
263 | + if case == 'agr': | |
264 | + # nom for e.g. ‹ktoś żądny czegoś› | |
265 | + case = attrs['case'] if 'case' in attrs else 'nom' | |
263 | 266 | POS = lambda lemma: correct_pos(lemma, 'subst') |
264 | 267 | NUM = lambda lemma: correct_num(lemma, phrase._number) |
265 | 268 | CASE = correct_case(case, function, negativity) |
... | ... | @@ -348,9 +351,14 @@ def make_phraseologisms(phrase, function, negativity, attrs={}, controller=None, |
348 | 351 | if phrase2._case._value == 'pred': |
349 | 352 | assert(controller) |
350 | 353 | assert(controller_grammar) |
351 | - function = controller._function._value if controller._function else None | |
352 | - control = True | |
354 | + #function = controller._function._value if controller._function else None | |
355 | + #control = True | |
353 | 356 | CASE = correct_case(phrase2._case._value, function, negativity) |
357 | + # np. uczynić coś *jakimś* / kobietę *jakąś* | |
358 | + # TODO czy są sytuacje, kiedy jest kontrola, ale nie powinniśmy jej w ten sposób uwzględniać? | |
359 | + if controller: | |
360 | + function = controller._function._value if controller._function else None | |
361 | + control = True | |
354 | 362 | if phrase._number == 'agr' and 'num' in attrs: |
355 | 363 | num = attrs['num'] |
356 | 364 | assert (num != 'agr') |
... | ... | @@ -387,6 +395,9 @@ def make_phraseologisms(phrase, function, negativity, attrs={}, controller=None, |
387 | 395 | # ktoś rozpoznaje kogoś *jako jakiegoś* (kontrola przez dopełnienie) |
388 | 396 | assert(controller) |
389 | 397 | assert(controller_grammar) |
398 | + # np. uznawać kogoś *za jakiegoś* / coś *za jakieś* / facetów *za jakichś* | |
399 | + # TODO czy są sytuacje, kiedy jest kontrola, ale nie powinniśmy jej w ten sposób uwzględniać? | |
400 | + if controller: | |
390 | 401 | function = controller._function._value if controller._function else None |
391 | 402 | control = True |
392 | 403 | if control: |
... | ... |
entries/phrase_descriptions/morph_generation.py
1 | 1 | import morfeusz2 |
2 | 2 | |
3 | +class MorphologyError(Exception): | |
4 | + pass | |
5 | + | |
3 | 6 | morfeusz = morfeusz2.Morfeusz(generate=True, analyse=False, expand_tags=True) |
4 | 7 | |
5 | 8 | LEMMA_KILL_LIST = { |
... | ... | @@ -441,7 +444,6 @@ def select_form(lemma, feats): |
441 | 444 | selected_forms = filtered_forms |
442 | 445 | selected_orth_tags = set((f[0], f[2]) for f in selected_forms) |
443 | 446 | if len(selected_orth_tags) != 1: |
444 | - print('----------', lemma, feats) | |
445 | - print(selected_forms) | |
446 | - 1 / 0 | |
447 | + #print('----------', lemma, feats) | |
448 | + raise MorphologyError(str(selected_forms)) | |
447 | 449 | return selected_orth_tags.pop() |
... | ... |
entries/phrase_descriptions/utils.py
... | ... | @@ -4,7 +4,7 @@ import re |
4 | 4 | |
5 | 5 | from importer.Phrase import * |
6 | 6 | |
7 | -from .morph_generation import select_form | |
7 | +from .morph_generation import MorphologyError, select_form | |
8 | 8 | |
9 | 9 | PRE, POST = 0, 1 |
10 | 10 | def build_phrase(head, dep, head_type, dep_type, order_override=None): |
... | ... | @@ -50,8 +50,7 @@ def build_phrase(head, dep, head_type, dep_type, order_override=None): |
50 | 50 | if order == POST: |
51 | 51 | return '{} {}'.format(head, dep) |
52 | 52 | else: |
53 | - print('***', head, dep, head_type, dep_type) | |
54 | - 1/0 | |
53 | + raise RuntimeError('couldn’t build phrase: {} {} {} {}'.format(head, dep, head_type, dep_type)) | |
55 | 54 | |
56 | 55 | def correct_lemma(lemma): |
57 | 56 | # TODO see notes |
... | ... | @@ -195,15 +194,16 @@ def get_forms(lemma, feats): |
195 | 194 | lemma_feats = [f(lemma) if hasattr(f, '__call__') else f for f in feats] |
196 | 195 | lemma_feats = [[f] if type(f) == str else f for f in lemma_feats] |
197 | 196 | ret = [] |
197 | + errors = [] | |
198 | 198 | for feats in product(*lemma_feats): |
199 | 199 | try: |
200 | 200 | ret.append(select_form(lemma, feats)) |
201 | - except: | |
202 | - pass | |
201 | + except MorphologyError as e: | |
202 | + errors.append(str(e)) | |
203 | 203 | if ret: |
204 | 204 | #print('get_forms', lemma, feats, ret) |
205 | 205 | return ret |
206 | - 1/0 | |
206 | + raise MorphologyError('couldn’t select form: {}'.format(' + '.join(errors))) | |
207 | 207 | |
208 | 208 | WOK_PREP = { |
209 | 209 | 'bez' : ('^mn',), # beze mnie |
... | ... |
entries/static/entries/css/entries.css
... | ... | @@ -45,6 +45,10 @@ legend { |
45 | 45 | background-color: #c8c8c8; |
46 | 46 | } |
47 | 47 | |
48 | +.position.active, .phrase.active { | |
49 | + background-color: #acacac; | |
50 | +} | |
51 | + | |
48 | 52 | .schema.active { |
49 | 53 | background-color: #c8c8c8; |
50 | 54 | } |
... | ... | @@ -168,3 +172,8 @@ legend { |
168 | 172 | margin-bottom: 2px; |
169 | 173 | |
170 | 174 | } |
175 | + | |
176 | +.frame.highlight .lemma, .example-role .lemma, .frame.active .lemma, .phrase.lemma { | |
177 | + background-image: url("/static/entries/img/lemma.png"); | |
178 | + background-repeat: repeat; | |
179 | +} | |
... | ... |
entries/static/entries/js/entries.js
... | ... | @@ -49,7 +49,8 @@ function schema2dom(schema) { |
49 | 49 | var position = schema.positions[i]; |
50 | 50 | // position props: function, control, predicative control |
51 | 51 | var props_td = document.createElement('td'); |
52 | - props_td.className = 'py-2 px-1 border-top border-left border-secondary'; | |
52 | + props_td.className = 'position py-2 px-1 border-top border-left border-secondary'; | |
53 | + props_td.dataset.position_id = position.id; | |
53 | 54 | var props_spans = []; |
54 | 55 | if (position.func.str !== '') { |
55 | 56 | props_spans.push(tooltipped_span(position.func.str, position.func.desc, null)); |
... | ... | @@ -254,21 +255,94 @@ function select_schema(schema) { |
254 | 255 | // TODO bind position and phrase clicks and opinion click for unselect |
255 | 256 | //bind_arguments_click(frame); |
256 | 257 | //bind_frame_opinion_click(frame); |
258 | + schema.find('.opinion-row').mouseenter(function(event) { | |
259 | + show_info(gettext('Kliknij, aby cofnąć wyświetlanie przykładów dla tego schematu.')); | |
260 | + event.stopPropagation(); | |
261 | + }).mouseleave(function() { | |
262 | + clear_info(); | |
263 | + }).click(function(event) { | |
264 | + event.stopPropagation(); | |
265 | + unselect_schema(schema); | |
266 | + clear_info(); | |
267 | + }); | |
268 | + schema.find('.position, .phrase').mouseenter(function() { | |
269 | + var is_position = $(this).hasClass('position'); | |
270 | + if ($(this).hasClass('active')) { | |
271 | + show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z') + ' ' + (is_position ? gettext('tą pozycją') : gettext('tą frazą')) + '.'); | |
272 | + } else { | |
273 | + show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z') + ' ' + (is_position ? gettext('tą pozycją') : gettext('tą frazą')) + '.'); | |
274 | + } | |
275 | + $(this).addClass('bg-highlight'); | |
276 | + event.stopPropagation(); | |
277 | + }).mouseleave(function() { | |
278 | + $(this).removeClass('bg-highlight'); | |
279 | + clear_info(); | |
280 | + }).click(function(event) { | |
281 | + event.stopPropagation(); | |
282 | + var active = $(this).hasClass('active'); | |
283 | + if (active) { | |
284 | + $(this).removeClass('active'); | |
285 | + } else { | |
286 | + $(this).addClass('active'); | |
287 | + } | |
288 | + // other restrictions might be active | |
289 | + restrict_syntax_examples(); | |
290 | + clear_info(); | |
291 | + }); | |
257 | 292 | } |
258 | 293 | |
259 | 294 | function unselect_schema(schema) { |
260 | 295 | // TODO unbind position and phrase clicks and opinion click for unselect |
261 | 296 | //unbind_arguments_click(frame); |
262 | 297 | //unbind_frame_opinion_click(frame); |
263 | - schema.removeClass('active'); | |
264 | - schema.find('.opinion-row').removeClass('bg-highlight'); | |
298 | + schema.removeClass('active').find('.position, .phrase').removeClass('active'); | |
299 | + //schema.find('.opinion-row').removeClass('bg-highlight'); | |
300 | + unbind_click(schema.find('.opinion-row')); | |
301 | + unbind_click(schema.find('.position')); | |
302 | + unbind_click(schema.find('.phrase')); | |
265 | 303 | // TODO |
266 | - //$('.argument.active').removeClass('active'); | |
267 | - //$('.preferences.active').removeClass('active'); | |
268 | 304 | clear_curr_example(false); |
269 | 305 | $('#syntax-examples-list').empty(); |
270 | - //$('#examples-argument').empty(); | |
271 | - //$('#examples-schema').empty(); | |
306 | + $('#syntax-examples').hide(); | |
307 | +} | |
308 | + | |
309 | +function restrict_syntax_examples() { | |
310 | + $('#syntax-examples').show(); | |
311 | + $('#syntax-no-examples').hide(); | |
312 | + $('#syntax-examples-list').find('.example').show(); | |
313 | + var position_ids = []; | |
314 | + var phrase_ids = []; | |
315 | + $('#syntax-schemata').find('.position.active').each(function() { | |
316 | + position_ids.push($(this).data('position_id')); | |
317 | + }); | |
318 | + $('#syntax-schemata').find('.phrase.active').each(function() { | |
319 | + phrase_ids.push($(this).data('phrase_id')); | |
320 | + }); | |
321 | + var lu_id = $('.entry-meaning.active').data('lu_id'); | |
322 | + if (!(position_ids.length || phrase_ids.length)) { | |
323 | + return; | |
324 | + } | |
325 | + var visible_examples = 0; | |
326 | + $('#syntax-examples-list').find('.example').each(function() { | |
327 | + var example = curr_examples_by_id[$(this).data('example_id')]; | |
328 | + if ( | |
329 | + //(argument_id && !example.argument_ids.includes(argument_id)) | |
330 | + (position_ids.length && !position_ids.every(elem => example.positions.includes(elem))) | |
331 | + || | |
332 | + (phrase_ids.length && !phrase_ids.every(elem => example.phrases_syntax.includes(elem))) | |
333 | + ) { | |
334 | + $(this).hide(); | |
335 | + if ($(this).hasClass('active')) { | |
336 | + clear_curr_example(false); | |
337 | + } | |
338 | + } else { | |
339 | + visible_examples += 1; | |
340 | + } | |
341 | + }); | |
342 | + if (visible_examples === 0) { | |
343 | + $('#syntax-examples').hide(); | |
344 | + $('#syntax-no-examples').show(); | |
345 | + } | |
272 | 346 | } |
273 | 347 | |
274 | 348 | function show_semantics(frames, subentries) { |
... | ... | @@ -345,8 +419,8 @@ function clear_curr_example(semantics) { |
345 | 419 | function restrict_semantics_examples() { |
346 | 420 | $('#semantics-examples').show(); |
347 | 421 | $('#semantics-no-examples').hide(); |
348 | - $('.example').show(); | |
349 | - var schema_id = $('.schema.active').data('schema_id'); | |
422 | + $('#semantics-examples-list').find('.example').show(); | |
423 | + var schema_id = $('#semantics-schemata').find('.schema.active').data('schema_id'); | |
350 | 424 | //var argument_id = $('.argument.active').data('argument_id'); |
351 | 425 | var argument_ids = []; |
352 | 426 | $('.argument.active').each(function() { |
... | ... | @@ -357,7 +431,7 @@ function restrict_semantics_examples() { |
357 | 431 | return; |
358 | 432 | } |
359 | 433 | var visible_examples = 0; |
360 | - $('.example').each(function() { | |
434 | + $('#semantics-examples-list').find('.example').each(function() { | |
361 | 435 | var example = curr_examples_by_id[$(this).data('example_id')]; |
362 | 436 | if ( |
363 | 437 | //(argument_id && !example.argument_ids.includes(argument_id)) |
... | ... | @@ -384,9 +458,9 @@ function restrict_semantics_examples() { |
384 | 458 | function bind_lus_click(frame) { |
385 | 459 | frame.find('.entry-meaning').mouseenter(function() { |
386 | 460 | if ($(this).hasClass('active')) { |
387 | - show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z tym znaczeniem.')); | |
461 | + show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z') + ' ' + gettext('tym znaczeniem') + '.'); | |
388 | 462 | } else { |
389 | - show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tym znaczeniem.')); | |
463 | + show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z') + ' ' + gettext('tym znaczeniem') + '.'); | |
390 | 464 | } |
391 | 465 | $(this).addClass('bg-highlight'); |
392 | 466 | }).mouseleave(function() { |
... | ... | @@ -416,9 +490,9 @@ function unbind_lus_click(frame) { |
416 | 490 | function do_bind_arguments_click(selector) { |
417 | 491 | selector.mouseenter(function() { |
418 | 492 | if ($(this).hasClass('active')) { |
419 | - show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z tą rolą.')); | |
493 | + show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z') + ' ' + gettext('tą rolą') + '.'); | |
420 | 494 | } else { |
421 | - show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tą rolą.')); | |
495 | + show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z') + ' ' + gettext('tą rolą') + '.'); | |
422 | 496 | } |
423 | 497 | $('.preferences[data-argument_id="' + $(this).data('argument_id') + '"]').addClass('bg-highlight'); |
424 | 498 | }).mouseleave(function() { |
... | ... | @@ -460,11 +534,11 @@ function unbind_arguments_click(frame) { |
460 | 534 | } |
461 | 535 | |
462 | 536 | function bind_semantics_schemata_click() { |
463 | - $('#semantics').find('.schema').mouseenter(function() { | |
537 | + $('#semantics-schemata').find('.schema').mouseenter(function() { | |
464 | 538 | if ($(this).hasClass('active')) { |
465 | - show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z tym schematem.')); | |
539 | + show_info(gettext('Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z') + ' ' + gettext('tym schematem') + '.'); | |
466 | 540 | } else { |
467 | - show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tym schematem.')); | |
541 | + show_info(gettext('Kliknij, aby wyświetlić wyłącznie przykłady powiązane z') + ' ' + gettext('tym schematem') + '.'); | |
468 | 542 | } |
469 | 543 | $(this).addClass('bg-highlight'); |
470 | 544 | }).mouseleave(function() { |
... | ... | @@ -472,8 +546,8 @@ function bind_semantics_schemata_click() { |
472 | 546 | clear_info(); |
473 | 547 | }).click(function() { |
474 | 548 | var active = $(this).hasClass('active'); |
475 | - $('.schema.active').removeClass('active'); | |
476 | - $('.example').show(); | |
549 | + $('#semantics-schemata').find('.schema.active').removeClass('active'); | |
550 | + $('#semantics-examples-list').find('.example').show(); | |
477 | 551 | $('#examples-schema').empty(); |
478 | 552 | if (!active) { |
479 | 553 | $(this).addClass('active'); |
... | ... | @@ -486,7 +560,7 @@ function bind_semantics_schemata_click() { |
486 | 560 | } |
487 | 561 | |
488 | 562 | function unbind_semantics_schemata_click() { |
489 | - unbind_click($('#semantics').find('.schema')); | |
563 | + unbind_click($('#semantics-schema').find('.schema')); | |
490 | 564 | } |
491 | 565 | |
492 | 566 | function bind_frame_opinion_click(frame) { |
... | ... | @@ -532,7 +606,7 @@ function unselect_frame(frame) { |
532 | 606 | $('.argument.active').removeClass('active'); |
533 | 607 | $('.entry-meaning.active').removeClass('active'); |
534 | 608 | $('.preferences.active').removeClass('active'); |
535 | - $('#semantics').find('.schema').removeClass('active'); | |
609 | + $('#semantics-schemata').find('.schema').removeClass('active'); | |
536 | 610 | $('.extra-phrase-types').remove(); |
537 | 611 | $('.phrase').removeClass('initiator stimulus condition factor experiencer theme recipient result instrument manner purpose attribute location path time duration measure lemma source foreground background goal'); |
538 | 612 | $('.realisation-description').remove(); |
... | ... | @@ -542,6 +616,7 @@ function unselect_frame(frame) { |
542 | 616 | $('#examples-lu').empty(); |
543 | 617 | $('#examples-schema').empty(); |
544 | 618 | $('#semantics-examples-list').empty(); |
619 | + $('#semantics-examples').hide(); | |
545 | 620 | $('#semantics-schemata').find('.schema').addClass('inactive'); |
546 | 621 | $('#semantics-schemata').find('.schema').show(); |
547 | 622 | $('#semantics-schemata').find('.subentry').show(); |
... | ... | @@ -568,7 +643,7 @@ function show_alternations(frame) { |
568 | 643 | var role = $('.argument[data-argument_id="' + arg_id + '"').data('role'); |
569 | 644 | for (var j in alternation[arg_id]) { |
570 | 645 | var phrase_id = alternation[arg_id][j]; |
571 | - row.find('.phrase[data-phrase_id="' + phrase_id + '"').addClass(role).after('<div class="realisation-phrase px-1 py-2"><b><i>' + curr_realisation_phrases[arg_id][i][phrase_id] + '</i></b></div>'); | |
646 | + row.find('.phrase[data-phrase_id="' + phrase_id + '"').addClass(role).after('<div class="realisation-phrase px-1 py-2"><i>' + curr_realisation_phrases[arg_id][i][phrase_id] + '</i></div>'); | |
572 | 647 | } |
573 | 648 | } |
574 | 649 | var description_row = '<tr class="realisation-description"><td class="px-1 py-2" colspan="' + colspan + '"><i>' + curr_realisation_descriptions[frame_id][schema_id][i] + '</i></td></tr>'; |
... | ... |
entries/views.py
1 | -import datetime | |
2 | 1 | import operator |
3 | 2 | import time |
4 | 3 | |
... | ... | @@ -284,7 +283,7 @@ def get_entries(request): |
284 | 283 | if request.method == 'POST': |
285 | 284 | forms = collect_forms(request.session['forms']) |
286 | 285 | scroller_params = get_scroller_params(request.POST) |
287 | - entries = get_filtered_objects(forms) | |
286 | + entries = get_filtered_objects(forms).filter(import_error=False) | |
288 | 287 | total = entries.count() |
289 | 288 | if scroller_params['filter']: |
290 | 289 | entries = entries.filter(name__startswith=scroller_params['filter']) |
... | ... | @@ -354,6 +353,7 @@ def schema2dict(schema, negativity, lang): |
354 | 353 | 'func' : position_prop2dict(p.function), |
355 | 354 | 'control' : position_prop2dict(p.control), |
356 | 355 | 'p_control' : position_prop2dict(p.pred_control), |
356 | + 'id' : '{}-{}'.format(schema.id, p.id), | |
357 | 357 | 'phrases' : [ |
358 | 358 | { |
359 | 359 | 'str' : str(pt), |
... | ... | @@ -490,7 +490,7 @@ def get_alternations(schemata, frames): |
490 | 490 | def get_examples(entry): |
491 | 491 | examples = [] |
492 | 492 | for example in entry.examples.all(): |
493 | - frame_ids, argument_ids, lu_ids, schema_ids, phrases, phrases_syntax = set(), set(), set(), set(), set(), set() | |
493 | + frame_ids, argument_ids, lu_ids, schema_ids, phrases, phrases_syntax, positions = set(), set(), set(), set(), set(), set(), set() | |
494 | 494 | for connection in example.example_connections.all(): |
495 | 495 | for argument in connection.arguments.all(): |
496 | 496 | frame_ids.add(argument.frame.id) |
... | ... | @@ -501,6 +501,7 @@ def get_examples(entry): |
501 | 501 | schema_ids.add(hook.schema.id); |
502 | 502 | phrases.add('{}-{}-{}-{}'.format(hook.schema.id, hook.position.id, hook.phrase_type.id, hook.alternation - 1)) |
503 | 503 | phrases_syntax.add('{}-{}-{}'.format(hook.schema.id, hook.position.id, hook.phrase_type.id)) |
504 | + positions.add('{}-{}'.format(hook.schema.id, hook.position.id)) | |
504 | 505 | examples.append({ |
505 | 506 | 'id' : str(example.id), |
506 | 507 | 'sentence' : example.sentence, |
... | ... | @@ -513,6 +514,7 @@ def get_examples(entry): |
513 | 514 | 'schema_ids' : sorted(schema_ids), |
514 | 515 | 'phrases' : sorted(phrases), |
515 | 516 | 'phrases_syntax' : sorted(phrases_syntax), |
517 | + 'positions' : sorted(positions), | |
516 | 518 | }) |
517 | 519 | return sorted(examples, key=lambda x: x['sentence']) |
518 | 520 | |
... | ... | @@ -523,6 +525,7 @@ def get_entry(request): |
523 | 525 | eid = request.POST['entry'] |
524 | 526 | if eid.isdigit() and form.is_valid(): |
525 | 527 | eid = int(eid) |
528 | + # TODO check that Entry has no import errors | |
526 | 529 | entry = Entry.objects.get(id=eid) |
527 | 530 | |
528 | 531 | entry_form, _, children_forms = collect_forms(request.POST['forms[]']) |
... | ... |
importer/Entry.py
... | ... | @@ -29,15 +29,20 @@ class Entry: |
29 | 29 | # @TODO: nie ma frequency w xml-u |
30 | 30 | entry = connections.models.Entry(name=self._base, pos=pos, status=status, frequency_1M=0, frequency_300M=0) |
31 | 31 | entry.save() |
32 | - self._syntax.store(entry, stored_positions) | |
33 | - if self._semantics is not None: | |
34 | - self._semantics.store(entry, all_meanings) | |
35 | - entry.save() | |
36 | - if self._meanings: | |
37 | - for meaning in self._meanings._meanings: | |
38 | - mng = all_meanings[meaning][1] | |
39 | - mng.assign_entry(entry) | |
40 | - self._examples.store(entry, all_meanings) | |
32 | + try: | |
33 | + self._syntax.store(entry, stored_positions) | |
34 | + if self._semantics is not None: | |
35 | + self._semantics.store(entry, all_meanings) | |
36 | + entry.save() | |
37 | + if self._meanings: | |
38 | + for meaning in self._meanings._meanings: | |
39 | + mng = all_meanings[meaning][1] | |
40 | + mng.assign_entry(entry) | |
41 | + self._examples.store(entry, all_meanings) | |
42 | + except Exception as e: | |
43 | + entry.import_error = True | |
44 | + entry.save() | |
45 | + raise | |
41 | 46 | |
42 | 47 | def __str__(self): |
43 | 48 | return self._pos + '(' + self._base + ',' + str(self._syntax) + ').' |
... | ... |
importer/Position.py
... | ... | @@ -114,11 +114,13 @@ class Position: |
114 | 114 | self._db_id = position.id |
115 | 115 | |
116 | 116 | controller = None |
117 | - # fails for: uważać, uznać, uznawać | |
118 | - assert(not control or not pred_control) | |
119 | 117 | if control and control.name == 'controllee': |
118 | + # no controllee and pred_controllee at the same time | |
119 | + assert(not pred_control or pred_control.name == 'pred_controller') | |
120 | 120 | controller = self._schema.getController('controllee') |
121 | 121 | if pred_control and pred_control.name == 'pred_controllee': |
122 | + # no controllee and pred_controllee at the same time | |
123 | + assert(not control or control.name == 'controller') | |
122 | 124 | controller = self._schema.getController('pred_controllee') |
123 | 125 | |
124 | 126 | for phrase in self._phrases: |
... | ... | @@ -146,10 +148,10 @@ class Position: |
146 | 148 | if self._id is not None: |
147 | 149 | stored_positions[extended_id] = position.id |
148 | 150 | |
149 | - def isController(self): | |
151 | + def hasControl(self, control): | |
150 | 152 | if self._control: |
151 | 153 | for c in self._control: |
152 | - if c._function.endswith('controller'): | |
154 | + if c._function == control: | |
153 | 155 | return True |
154 | 156 | return False |
155 | 157 | |
... | ... |
importer/RealizationDescriptionUtils.py
... | ... | @@ -5,6 +5,9 @@ from entries.phrase_descriptions.descriptions import make_phraseologisms |
5 | 5 | from importer.Phrase import Case, Preposition, Modification, Words, NP, LexNP, PrepNP, LexPrepNP, AdjP, LexAdjP, PActP, LexPActP, Compar, LexCompar, Fixed |
6 | 6 | from importer.Position import Position |
7 | 7 | |
8 | +class RealisationDescriptionError(Exception): | |
9 | + pass | |
10 | + | |
8 | 11 | morfeusz = morfeusz2.Morfeusz(generate=False, analyse=True, expand_tags=True) |
9 | 12 | |
10 | 13 | SYNSET_KILL_LIST = ( |
... | ... | @@ -408,7 +411,8 @@ def make_comprepnp(comprep, words, num, mod): |
408 | 411 | |
409 | 412 | def make_compar(compar, words, num, mod, controller): |
410 | 413 | dummy_id = None |
411 | - assert(controller) | |
414 | + if not controller: | |
415 | + raise RealisationDescriptionError('no controller for {}'.format(compar)) | |
412 | 416 | controller_case = controller.getCase() |
413 | 417 | np = NP(Case(controller_case), dummy_id) |
414 | 418 | lexnp = LexNP(np, num, words, mod, dummy_id) |
... | ... |
importer/RealizationDescriptions.py
1 | +import datetime | |
1 | 2 | import os |
2 | 3 | |
3 | 4 | from collections import Counter, defaultdict |
... | ... | @@ -31,16 +32,14 @@ def select_predefined(predefs): |
31 | 32 | return predefs[0] |
32 | 33 | return 'ALL' |
33 | 34 | # TODO inne heurystyki? |
34 | - print(predefs) | |
35 | - 1/0 | |
35 | + raise RealisationDescriptionError('couldn’t choose predef lemma: {}'.format('/'.join(predefs))) | |
36 | 36 | |
37 | 37 | def select_predefined_for_xp(predefs, role): |
38 | 38 | if predefs == ['ISTOTY']: |
39 | 39 | return 'ISTOTY' |
40 | 40 | return 'ALL' |
41 | 41 | # TODO heurystyki? |
42 | - print(predefs) | |
43 | - 1/0 | |
42 | + raise RealisationDescriptionError('couldn’t choose predef lemma for XP: {}'.format('/'.join(predefs))) | |
44 | 43 | |
45 | 44 | def get_predefined_lemma(argument, xp=False): |
46 | 45 | predefined = argument.predefined.all() |
... | ... | @@ -66,11 +65,165 @@ def get_hyponyms(synset, seen=None, tab=' '): |
66 | 65 | hyponyms.update(get_hyponyms(hypo, seen, tab=tab + ' ')) |
67 | 66 | return hyponyms |
68 | 67 | |
68 | +# przyspieszająca heurystyka na podstawie oglądania danych | |
69 | +PRIORITY_SYNSETS = ( | |
70 | + #rzecz-4 | |
71 | + #103156, | |
72 | + #przedmiot-1 | |
73 | + #2646, | |
74 | + #substancja-1 | |
75 | + #5236, | |
76 | +) | |
77 | + | |
78 | +# for benchmarking | |
79 | +BENCH3 = defaultdict(list) | |
80 | + | |
81 | +# precalculated for the largest ones | |
82 | +HYPONYM_CACHE = { | |
83 | + # sklep-1 | |
84 | + 4747 : 46, | |
85 | + # obiekt budowlany-1 | |
86 | + 53426 : 590, | |
87 | + # konstrukcja-1 | |
88 | + 7218 : 614, | |
89 | + # cecha człowieka-1 | |
90 | + 36347 : 676, | |
91 | + # aberracja-1 nieprawidłowość-1 zaburzenie-2 zakłócenie-3 | |
92 | + 4127 : 700, | |
93 | + # znak-1 | |
94 | + 7416 : 732, | |
95 | + # coś na ząb-1 jedzenie-2 pokarm-1 pożywienie-3 żywność-1 | |
96 | + 10738 : 766, | |
97 | + # materiał-1 tworzywo-1 | |
98 | + 1612 : 879, | |
99 | + # jednostka miary-1 jednostka-4 miano-2 miara-3 | |
100 | + 1161 : 881, | |
101 | + # związek chemiczny-1 związek-1 | |
102 | + 19589 : 882, | |
103 | + # zjawisko naturalne-1 | |
104 | + 5351 : 901, | |
105 | + # dzieło-2 praca-6 | |
106 | + 7469 : 927, | |
107 | + # część-1 | |
108 | + 462 : 957, | |
109 | + # cecha czynności-1 cecha działania-1 | |
110 | + 5953 : 1033, | |
111 | + # część-3 | |
112 | + 104936 : 1056, | |
113 | + # cecha fizyczna-1 | |
114 | + 5464 : 1056, | |
115 | + # wypowiedź-1 | |
116 | + 3998 : 1062, | |
117 | + # proces-1 | |
118 | + 54253 : 1103, | |
119 | + # ciąg wydarzeń-1 ciąg zdarzeń-1 | |
120 | + 47401 : 1107, | |
121 | + # grupa-2 zespół ludzi-1 zespół-2 | |
122 | + 7653 : 1176, | |
123 | + # człowiek charakteryzowany ze względu na kwalifikacje-1 | |
124 | + 6779 : 1188, | |
125 | + # substancja chemiczna-1 | |
126 | + 5233 : 1206, | |
127 | + # przyrząd-1 | |
128 | + 7425 : 1260, | |
129 | + # ilość-1 | |
130 | + 1078 : 1427, | |
131 | + # grupa ludzi-1 grupa-5 ludzie-1 | |
132 | + 7702 : 1510, | |
133 | + # kategoria-3 pojęcie-2 | |
134 | + 8170 : 1522, | |
135 | + # urządzenie-5 | |
136 | + 7446 : 1524, | |
137 | + # historia-3 wydarzenie-1 wypadek-3 zdarzenie-2 | |
138 | + 6526 : 1533, | |
139 | + # grupa istot-1 | |
140 | + 103330 : 1585, | |
141 | + # miejsce-1 | |
142 | + 4750 : 1632, | |
143 | + # stan-1 | |
144 | + 3243 : 1761, | |
145 | + # narzędzie-1 | |
146 | + 7610 : 1800, | |
147 | + # roślina-1 | |
148 | + 4603 : 1928, | |
149 | + # artefakt-1 twór-5 wytwór-2 | |
150 | + 2605 : 2029, | |
151 | + # człowiek ze względu na swoje zajęcie-1 | |
152 | + 6797 : 2184, | |
153 | + # nazwa człowieka uwzględniająca jego cechy-1 nosiciel cechy-1 | |
154 | + 6778 : 2308, | |
155 | + # płód-3 wytwór umysłu-1 | |
156 | + 8137 : 2599, | |
157 | + # człowiek ze względu na relacje społeczne-1 | |
158 | + 6775 : 2642, | |
159 | + # fenomen-1 zjawisko-1 | |
160 | + 5371 : 2674, | |
161 | + # środek-1 | |
162 | + 28294 : 2793, | |
163 | + # człowiek, który coś robi-1 | |
164 | + 241977 : 2828, | |
165 | + # substancja-1 | |
166 | + 5236 : 2871, | |
167 | + # zwierzę-1 | |
168 | + 5621 : 2966, | |
169 | + # materia-3 | |
170 | + 247979 : 2970, | |
171 | + # spowodowanie-1 sprawienie-1 | |
172 | + 102579 : 4255, | |
173 | + # atrybut-1 cecha-1 przymiot-1 własność-2 właściwość-1 | |
174 | + 323 : 4579, | |
175 | + # grupa-4 zbiór-1 | |
176 | + 1282 : 4587, | |
177 | + # uczynienie-1 zrobienie-1 | |
178 | + 102576 : 4851, | |
179 | + # całość-1 ogół-1 | |
180 | + 2129 : 5668, | |
181 | + # człowiek-1 istota ludzka-1 jednostka-2 osoba-1 | |
182 | + 6047 : 6151, | |
183 | + # osoba-4 | |
184 | + 28688 : 6170, | |
185 | + # wytwór-1 | |
186 | + 2903 : 7230, | |
187 | + # efekt-1 rezultat-1 skutek-1 wynik-1 | |
188 | + 5195 : 7915, | |
189 | + # przedmiot-1 | |
190 | + 2646 : 7552, | |
191 | + # istota żywa-1 stworzenie-5 twór-1 | |
192 | + 6045 : 8448, | |
193 | + # istota-1 | |
194 | + 1027 : 8536, | |
195 | + # czynność-1 | |
196 | + 10765 : 8653, | |
197 | + # rzecz-4 | |
198 | + 103156 : 9480, | |
199 | + # egzemplarz-1 indywiduum-1 jednostka-3 organizm-1 osobnik-2 | |
200 | + 6731 : 10609, | |
201 | + # obiekt-2 | |
202 | + 234224 : 21435, | |
203 | +} | |
204 | + | |
69 | 205 | def select_synsets(synsets): |
206 | + for p_synset in PRIORITY_SYNSETS: | |
207 | + ssets = [s for s in synsets if s.id == p_synset] | |
208 | + if ssets: | |
209 | + assert(len(ssets) == 1) | |
210 | + return ssets | |
70 | 211 | by_num_hyponyms = defaultdict(set) |
71 | 212 | for synset in synsets: |
72 | - hyponyms = get_hyponyms(synset) | |
73 | - N = len(hyponyms) | |
213 | + sid = synset.id | |
214 | + if sid not in HYPONYM_CACHE: | |
215 | + #------- | |
216 | + t1 = datetime.datetime.now() | |
217 | + #------- | |
218 | + hyponyms = get_hyponyms(synset) | |
219 | + HYPONYM_CACHE[sid] = len(hyponyms) | |
220 | + #------- | |
221 | + t2 = datetime.datetime.now() | |
222 | + # deciseconds :) | |
223 | + d = round((t2 - t1).total_seconds() * 10) | |
224 | + BENCH3[d].append((HYPONYM_CACHE[sid], sid, synset)) | |
225 | + # ---- | |
226 | + N = HYPONYM_CACHE[sid] | |
74 | 227 | by_num_hyponyms[N].add(synset) |
75 | 228 | M = max(by_num_hyponyms.keys()) |
76 | 229 | return list(by_num_hyponyms[M]) |
... | ... | @@ -147,9 +300,19 @@ def get_synsets_lemma(argument, pos): |
147 | 300 | LEMMA_CACHE[key] = ret |
148 | 301 | return ret |
149 | 302 | |
150 | -#LEMMA_CACHE = dict() | |
303 | +# for benchmarking | |
304 | +BENCH2 = defaultdict(list) | |
151 | 305 | |
152 | 306 | def get_argument_lemma(argument, xp=False): |
307 | + t1 = datetime.datetime.now() | |
308 | + ret = get_argument_lemma2(argument, xp=xp) | |
309 | + t2 = datetime.datetime.now() | |
310 | + # deciseconds :) | |
311 | + d = round((t2 - t1).total_seconds() * 10) | |
312 | + BENCH2[d].append((argument.predefined.all(), argument.synsets.all(), ret)) | |
313 | + return ret | |
314 | + | |
315 | +def get_argument_lemma2(argument, xp=False): | |
153 | 316 | lemma = get_predefined_lemma(argument, xp=xp) |
154 | 317 | if lemma: |
155 | 318 | return lemma, True |
... | ... | @@ -213,8 +376,7 @@ def process_lemma(lemma, phrase_type): |
213 | 376 | lemma = words[0] |
214 | 377 | mod = make_prepnp_mod(words[2], words[1], 'gen') |
215 | 378 | else: |
216 | - print(lemma, tags) | |
217 | - 1/0 | |
379 | + raise RealisationDescriptionError('couldn’t parse lemma: {} {}'.format(lemma, tags)) | |
218 | 380 | |
219 | 381 | if lemma == 'lata': |
220 | 382 | return 'rok', 'm3', 'pl', 'subst', mod |
... | ... | @@ -244,11 +406,7 @@ def process_lemma(lemma, phrase_type): |
244 | 406 | if len(lemmata) == 1: |
245 | 407 | return lemmata.pop(), 'n', 'sg', 'ger', mod |
246 | 408 | |
247 | - print('\n\n***===============================') | |
248 | - print(lemma) | |
249 | - print(get_interps(lemma)) | |
250 | - 1/0 | |
251 | - print('***===============================\n\n') | |
409 | + raise RealisationDescriptionError('couldn’t process lemma: {} {}'.format(lemma, get_interps(lemma))) | |
252 | 410 | |
253 | 411 | ''' |
254 | 412 | # TODO rodzaj w zależności od hiperonimów? |
... | ... | @@ -359,13 +517,12 @@ def generate_phrases(function, negativity, phrase, lemma, is_predef, head_gender |
359 | 517 | if phrase._type._realisations: |
360 | 518 | phr = '/'.join(phrase._type._realisations) + ' …' |
361 | 519 | else: |
362 | - phr = 'kto/co/jak/… robi' | |
520 | + phr = 'kto/co/czy/… robi/się dzieje/…' | |
363 | 521 | elif cptype == 'rel': |
364 | 522 | if phrase._type._realisations: |
365 | 523 | phr = '/'.join(phrase._type._realisations) + ' …' |
366 | 524 | else: |
367 | - print(phrase) | |
368 | - 1 / 0 | |
525 | + raise RealisationDescriptionError('rel phrase without realisations: {}'.format(phrase)) | |
369 | 526 | elif cptype == 'żeby2': |
370 | 527 | comp = 'że' if negativity != 'neg' else 'żeby' |
371 | 528 | phr = 'że coś się stało' |
... | ... | @@ -539,9 +696,21 @@ PHRASE_CACHE = dict() |
539 | 696 | |
540 | 697 | PHRASE_SEP = ' / ' |
541 | 698 | |
699 | +# for benchmarking | |
700 | +BENCH = defaultdict(list) | |
701 | + | |
702 | +def get_phrase_description(subentry, argument, position, phrase, controller_grammar=None): | |
703 | + t1 = datetime.datetime.now() | |
704 | + ret = get_phrase_description2(subentry, argument, position, phrase, controller_grammar=controller_grammar) | |
705 | + t2 = datetime.datetime.now() | |
706 | + # deciseconds :) | |
707 | + d = round((t2 - t1).total_seconds() * 10) | |
708 | + BENCH[d].append((subentry.entry.name, argument.role.role.role, ret[0])) | |
709 | + return ret | |
710 | + | |
542 | 711 | # subentry, argument: DB model objects |
543 | 712 | # schema, phrase: importer objects |
544 | -def get_phrase_description(subentry, argument, position, phrase, controller_grammar=None): | |
713 | +def get_phrase_description2(subentry, argument, position, phrase, controller_grammar=None): | |
545 | 714 | print() |
546 | 715 | print(argument) |
547 | 716 | print(phrase) |
... | ... | @@ -549,21 +718,33 @@ def get_phrase_description(subentry, argument, position, phrase, controller_gram |
549 | 718 | function = position._function._value if position._function else None |
550 | 719 | control = None |
551 | 720 | if position._control: |
552 | - assert(len(position._control) == 1) | |
553 | - control = position._control[0]._function | |
721 | + #assert(len(position._control) == 1) | |
722 | + #control = position._control[0]._function | |
723 | + ee = [c._function for c in position._control if c._function.endswith('controllee')] | |
724 | + er = [c._function for c in position._control if c._function.endswith('controller')] | |
725 | + assert(len(ee) <= 1) | |
726 | + assert(len(er) <= 1) | |
727 | + # e.g. ‹uznać› — controllee and pred_controller on the same position, take controllee | |
728 | + if ee: | |
729 | + control = ee[0] | |
730 | + else: | |
731 | + control = er[0] | |
554 | 732 | negativity = subentry.negativity.name if subentry.negativity else '_' |
555 | 733 | head_lemma, head_gender = subentry.entry.name, None |
556 | 734 | |
557 | 735 | controller, controller_features, controller_function = None, None, None |
558 | 736 | if control and control.endswith('controllee'): |
559 | - print('==================', control) | |
560 | 737 | controller = position._schema.getController(control) |
561 | - controller_features = controller_grammar[controller] | |
738 | + try: | |
739 | + controller_features = controller_grammar[controller] | |
740 | + except KeyError: | |
741 | + raise RealisationDescriptionError('couldn’t determine grammar features for {}: {} {}'.format(' '.join(map(str, argument.frame.lexical_units.all())), control, phrase)) | |
562 | 742 | controller_function = controller._function._value if controller._function else None |
563 | 743 | |
564 | 744 | if subentry.entry.pos.tag == 'noun': |
565 | 745 | interps = get_interps(head_lemma, lemma=head_lemma, tag_constraints=['subst', 'nom']) |
566 | 746 | head_gender = get_gender(interps) |
747 | + | |
567 | 748 | # TODO |
568 | 749 | # TODO gender, number |
569 | 750 | # TODO (‹jakieś›) oko * (‹jakieś›) oczy *błyszczy* z powodu substancji |
... | ... | @@ -579,11 +760,8 @@ def get_phrase_description(subentry, argument, position, phrase, controller_gram |
579 | 760 | gender, number = get_lex_gender_number(phrase) |
580 | 761 | return PHRASE_SEP.join(phrs), gender, number |
581 | 762 | lemmata, is_predef = get_argument_lemma(argument, xp=(phrase._name == 'xp' and not phrase._category._limitations)) |
582 | - try: | |
583 | - assert(len(lemmata) == 1) | |
584 | - except: | |
585 | - print(lemmata, is_predef) | |
586 | - raise | |
763 | + if len(lemmata) != 1: | |
764 | + raise RealisationDescriptionError('couldn’t choose single lemma: {}'.format('/'.join(lemmata))) | |
587 | 765 | phrases = [] |
588 | 766 | # TODO since there’s one lemma, drop the loop |
589 | 767 | for lemma in lemmata: |
... | ... | @@ -730,13 +908,13 @@ def select_phrase_description(position, phrase_descriptions): |
730 | 908 | # TODO? napsuć zdrowia/nerwów |
731 | 909 | if set(desc[0] for desc in phrase_descriptions.values()) == {'zdrowia', 'nerwów'}: |
732 | 910 | return ('zdrowia i nerwów', 'n', 'pl') |
733 | - for phrase, desc in phrase_descriptions.items(): | |
734 | - print('***', type(phrase)) | |
735 | - print('*** ', phrase, desc) | |
736 | - for priority, phrases in sorted(by_priority.items()): | |
737 | - print('===', priority) | |
738 | - print('=== ', phrases) | |
739 | - 1/0 | |
911 | + #for phrase, desc in phrase_descriptions.items(): | |
912 | + # print('***', type(phrase)) | |
913 | + # print('*** ', phrase, desc) | |
914 | + #for priority, phrases in sorted(by_priority.items()): | |
915 | + # print('===', priority) | |
916 | + # print('=== ', phrases) | |
917 | + raise RealisationDescriptionError('couldn’t select phrase description: {}'.format(' * '.join(desc[0] for desc in phrase_descriptions.values()))) | |
740 | 918 | |
741 | 919 | |
742 | 920 | FUNCTION_RANK = { |
... | ... | @@ -869,20 +1047,30 @@ def get_realisation_description(realisation, subentry, aspect): |
869 | 1047 | entry = subentry.entry |
870 | 1048 | ars = [(get_argument_realisation_priority(ar, entry.pos.tag), fallback(ar._description), ar) for ar in realisation._argument_realizations] |
871 | 1049 | print([(p1, p2, ar._description) for p1, p2, ar in ars]) |
872 | - ars = sorted(ars) | |
1050 | + try: | |
1051 | + ars = sorted(ars) | |
1052 | + except: | |
1053 | + raise RealisationDescriptionError('couldn’t order argument realisations: {}'.format(' * '.join('{}{} {}'.format(ar._argument._semantic_role._value, ar._argument._semantic_role._attribute, ar._description) for ar in realisation._argument_realizations))) | |
873 | 1054 | if entry.pos.tag == 'verb': |
874 | 1055 | # dla innych nie przesuwamy np(dat): bliski *komuś* |
875 | 1056 | ars = rerank(ars) |
876 | - before = [ar._description.split(PHRASE_SEP)[0] for rank, fallback, ar in ars if rank[0] == 0] | |
877 | - after = [ar._description.split(PHRASE_SEP)[0] for rank, fallback, ar in ars if rank[0] > 0] | |
1057 | + before = [('<b>{}</b>' if ar._argument._semantic_role._value == 'Lemma' else '{}').format(ar._description.split(PHRASE_SEP)[0]) for rank, fallback, ar in ars if rank[0] == 0] | |
1058 | + after = [('<b>{}</b>' if ar._argument._semantic_role._value == 'Lemma' else '{}').format(ar._description.split(PHRASE_SEP)[0]) for rank, fallback, ar in ars if rank[0] > 0] | |
878 | 1059 | subj_ars = [ar for ar in realisation._argument_realizations if ar._position._function and ar._position._function._value == 'subj'] |
879 | - assert(len(subj_ars) <= 1) | |
1060 | + if len(subj_ars) > 1: | |
1061 | + raise RealisationDescriptionError('> 1 subject argument realisations: {}'.format(' * '.join('{}{} {}'.format(ar._argument._semantic_role._value, ar._argument._semantic_role._attribute, ar._description) for ar in subj_ars))) | |
880 | 1062 | subj_ar = subj_ars[0] if subj_ars else None |
1063 | + head_ars = [ar for ar in realisation._argument_realizations if ar._position._function and ar._position._function._value == 'head'] | |
1064 | + if len(head_ars) > 1: | |
1065 | + raise RealisationDescriptionError('> 1 head argument realisations: {}'.format(' * '.join('{}{} {}'.format(ar._argument._semantic_role._value, ar._argument._semantic_role._attribute, ar._description) for ar in head_ars))) | |
1066 | + head_ar = head_ars[0] if head_ars else None | |
881 | 1067 | entry_form = entry.name |
882 | 1068 | if entry.name == 'naleźć': |
883 | 1069 | #TODO błąd w słowniku |
884 | 1070 | aspect = 'perf' |
885 | - if entry.name == 'bootować': | |
1071 | + if entry.pos.tag == 'adj' and head_ar: | |
1072 | + entry_form = get_form(entry.name, ['adj', head_ar._number, 'nom', head_ar._gender, 'pos'])[0] | |
1073 | + elif entry.name == 'bootować': | |
886 | 1074 | # nienotowane w Morfeuszu |
887 | 1075 | entry_form = 'bootuje' |
888 | 1076 | elif entry.name == 'wtyczkować': |
... | ... | @@ -903,10 +1091,7 @@ def get_realisation_description(realisation, subentry, aspect): |
903 | 1091 | if subj_ar._gender: |
904 | 1092 | subj_gend = subj_ar._gender |
905 | 1093 | else: |
906 | - print('##############', subj_ar) | |
907 | - print('##############', subj_ar._position._phrases) | |
908 | - print('##############', subj_ar._argument) | |
909 | - 1/0 | |
1094 | + raise RealisationDescriptionError('couldn’t determine subject’s gender: {} {} {}'.format(subj_ar, subj_ar._position._phrases, subj_ar._argument)) | |
910 | 1095 | else: |
911 | 1096 | # no subject: ‹jestem kotem — olśniło kogoś› |
912 | 1097 | subj_gend = 'n' |
... | ... | @@ -919,6 +1104,7 @@ def get_realisation_description(realisation, subentry, aspect): |
919 | 1104 | # bokser sparuje — imperf nienotowane w Morfeuszu |
920 | 1105 | entry_form = 'sparuje' |
921 | 1106 | else: |
1107 | + print(entry_base, ['fin', subj_num, 'ter', 'imperf']) | |
922 | 1108 | entry_form = get_form(entry_base, ['fin', subj_num, 'ter', 'imperf'])[0] |
923 | 1109 | else: |
924 | 1110 | # dokonane: praet (cz. przeszły) |
... | ... | @@ -963,4 +1149,21 @@ def get_realisation_description(realisation, subentry, aspect): |
963 | 1149 | if subentry.inherent_sie.name == 'true': |
964 | 1150 | entry_form += ' się' |
965 | 1151 | elements = before + ['<b>{}</b>'.format(entry_form)] + after |
1152 | + | |
1153 | + if entry_form[0] > 'z': | |
1154 | + #------- | |
1155 | + for t in sorted(BENCH3.keys()): | |
1156 | + if t > 4: | |
1157 | + print(' ************', t, len(BENCH3[t]), BENCH3[t][:10]) | |
1158 | + for n, sid, synset in BENCH3[t]: | |
1159 | + print(' ************', synset) | |
1160 | + print(' ************', sid, ':', n) | |
1161 | + #for t in sorted(BENCH2.keys()): | |
1162 | + # if t > 4: | |
1163 | + # print(' ********', t, len(BENCH2[t]), BENCH2[t][:10]) | |
1164 | + #for t in sorted(BENCH.keys()): | |
1165 | + # if t > 4: | |
1166 | + # print(' ****', t, len(BENCH[t]), BENCH[t][:10]) | |
1167 | + #------- | |
1168 | + | |
966 | 1169 | return ' '.join(elements) |
... | ... |
importer/Realizations.py
... | ... | @@ -111,19 +111,37 @@ class FrameRealization: |
111 | 111 | if connection.alternation >= alternation: |
112 | 112 | alternation = connection.alternation + 1 |
113 | 113 | subentry = self._schema.getSubentry(entry) |
114 | - controllers, non_controllers = [], [] | |
115 | - for ar in self._argument_realizations: | |
116 | - (controllers if ar._position.isController() else non_controllers).append(ar) | |
117 | 114 | # during storing, gender and number is determined, so first store the controller |
118 | 115 | # argument realisations to use those for controllee descriptions |
116 | + controllers, controllees, pred_controllers, rest = [], [], [], [] | |
117 | + for ar in self._argument_realizations: | |
118 | + if ar._position.hasControl('controller'): | |
119 | + controllers.append(ar) | |
120 | + elif ar._position.hasControl('controllee'): | |
121 | + controllees.append(ar) | |
122 | + elif ar._position.hasControl('pred_controller'): | |
123 | + pred_controllers.append(ar) | |
124 | + else: | |
125 | + rest.append(ar) | |
126 | + #(controllers if ar._position.isController() else non_controllers).append(ar) | |
119 | 127 | controller_grammar = {} |
128 | + # in this order, e.g. uznać subj,controller{np(str)}+controllee,pred_controller{infp(_)}+pred_controllee{adjp(inst)} | |
120 | 129 | for ar in controllers: |
121 | 130 | ar.store(subentry, frame, schema, alternation) |
122 | 131 | controller_grammar[ar._position] = (ar._gender, ar._number) |
123 | - print('**************************', controller_grammar) | |
124 | - for ar in non_controllers: | |
132 | + for ar in controllees: | |
133 | + ar.store(subentry, frame, schema, alternation, controller_grammar=controller_grammar) | |
134 | + if ar._position.hasControl('pred_controller'): | |
135 | + controller_grammar[ar._position] = (ar._gender, ar._number) | |
136 | + for ar in pred_controllers: | |
137 | + ar.store(subentry, frame, schema, alternation) | |
138 | + controller_grammar[ar._position] = (ar._gender, ar._number) | |
139 | + for ar in rest: | |
125 | 140 | ar.store(subentry, frame, schema, alternation, controller_grammar=controller_grammar) |
141 | + #for ar in non_controllers: | |
142 | + # ar.store(subentry, frame, schema, alternation, controller_grammar=controller_grammar) | |
126 | 143 | description = get_realisation_description(self, subentry, self._schema.getAspect()) |
144 | + #print('**************************', controller_grammar) | |
127 | 145 | print('================================', description) |
128 | 146 | RealisationDescription.objects.create(frame=frame, |
129 | 147 | schema=schema, |
... | ... |
importer/Schema.py
... | ... | @@ -4,6 +4,9 @@ |
4 | 4 | from importer.Position import Position |
5 | 5 | from syntax.models import SchemaOpinion, Aspect, InherentSie, Negativity, Predicativity, Subentry |
6 | 6 | |
7 | +class ControlError(Exception): | |
8 | + pass | |
9 | + | |
7 | 10 | class Characteristic: |
8 | 11 | |
9 | 12 | def __init__(self, name, value): |
... | ... | @@ -139,7 +142,8 @@ class Schema: |
139 | 142 | for c in position._control: |
140 | 143 | if c._function == control2: |
141 | 144 | controllers.append(position) |
142 | - assert(len(controllers) == 1) | |
145 | + if len(controllers) != 1: | |
146 | + raise ControlError('incorrect number of controllers for {}: {}'.format(control, len(controllers))) | |
143 | 147 | return controllers[0] |
144 | 148 | |
145 | 149 | def store(self, entry, stored_positions): |
... | ... |
importer/WalentyXML.py
1 | 1 | #! /usr/bin/python |
2 | 2 | # -*- coding: utf-8 -*- |
3 | 3 | |
4 | +import traceback | |
5 | + | |
4 | 6 | from xml.sax import handler |
5 | 7 | from importer.Entry import Entry |
6 | 8 | |
... | ... | @@ -43,6 +45,8 @@ class WalentyTeiHandler(handler.ContentHandler): |
43 | 45 | self._examples_in = None # @TODO: read disambiguated file |
44 | 46 | self._examples_out = open(examples_out_file, "w") |
45 | 47 | self._misconnected_out = open(misconnected_examples_out_file, "w") |
48 | + self._errors = [] | |
49 | + self._counter = 0 | |
46 | 50 | |
47 | 51 | def startElement(self, name, attrs): |
48 | 52 | if name == 'date': |
... | ... | @@ -65,83 +69,21 @@ class WalentyTeiHandler(handler.ContentHandler): |
65 | 69 | self._current.setContent(self._content.strip()) |
66 | 70 | self._current = self._current._parent |
67 | 71 | if name == 'entry': |
72 | + self._counter += 1 | |
68 | 73 | if self._current is not None: |
69 | 74 | raise TEIStructureError() |
70 | 75 | base = self._subtree._children[0]._children[0]._content |
71 | - # TODO sprawdzić i poprawić te hasła | |
72 | - if base not in ( | |
73 | - 'analogiczny', # compar(jak) bez kontroli | |
74 | - 'charakterystyka', # błąd – kontrola nie od pary | |
75 | - 'degradacja', # np(gen) + compar(jako) – brakuje kontroli? | |
76 | - 'dozwalać', 'dozwolić', # w alternacji występuje tylko controllee – błąd czy uwzględniać? (***) | |
77 | - 'eksploatacja', # xp(abl) + xp(locat) – to chyba jest przesadna fiksacja na koordynacji | |
78 | - 'fenomen', # np(gen) + compar(jako) – brakuje kontroli? | |
79 | - 'gnać', # błąd – brak controllera | |
80 | - 'kompromitacja', # possp + compar(jako) – brakuje kontroli? | |
81 | - 'metafora', # possp + np(gen) + compar(jako) – brakuje kontroli? | |
82 | - 'mianować', # dwa pred_controllee, bez controllera – błąd | |
83 | - 'niewiarygodny', # compar(jako) bez kontroli | |
84 | - 'obligować', # (***) | |
85 | - 'odetkać', # w XML-u 20200626 jest dziwna alternacja, chyba błąd | |
86 | - #'pieprzyć', # brakuje [co] w modyfikacjach cp(rel[co]) | |
87 | - 'pochwała', # np(gen) + compar(jako) – brakuje kontroli? | |
88 | - 'podziw', # prepnp(dla,gen) + compar(jako) – brakuje kontroli? | |
89 | - #'pognać', # brakuje [co] w modyfikacjach cp(rel[co]) | |
90 | - 'polecać', 'popłacać', # (***) | |
91 | - 'porozjeżdżać', # błąd – kontrola nie od pary | |
92 | - 'powychodzić', # błąd – kontrola nie od pary | |
93 | - 'praktyka', # possp + compar(jako) – brakuje kontroli? | |
94 | - 'predestynować', # dziwna alternacja + dlaczego akurat np jest Foreground, a ncp Background? | |
95 | - 'proklamacja', # np(gen) + compar(jako) – brakuje kontroli? | |
96 | - 'przestać', 'przestawać', # (***) | |
97 | - 'rejestracja', # np(gen) + compar(jako) – brakuje kontroli? | |
98 | - 'reklama', # np(gen) + compar(jako) – brakuje kontroli? | |
99 | - 'reprezentacja', # np(gen) + compar(jako) – brakuje kontroli? | |
100 | - 'rewelacja', # prepncp(o,loc,rel) – powinno być int? | |
101 | - 'rola', # possp + compar(jako) – brakuje kontroli? | |
102 | - 'rozpoznawalność', # np(gen) + compar(jako) – brakuje kontroli? | |
103 | - 'spodziewać', # prędzej + śmierci + compar(niż) – brakuje kontroli? | |
104 | - 'sprzymierzyć', # imperf – błąd? | |
105 | - 'staż', # possp + compar(jako) – brakuje kontroli? | |
106 | - 'stygmatyzacja', # np(gen) + compar(jako) – brakuje kontroli? | |
107 | - 'trząść', # np(str) + compar(jak) – brakuje kontroli? | |
108 | - 'uczestnictwo', # possp + compar(jako) – brakuje kontroli? | |
109 | - #'umilknąć', # brakuje [jakby] w modyfikacjach cp(rel[co]) | |
110 | - 'ustalać', # błąd – kontrola nie od pary | |
111 | - 'uważać', # podwójna kontrola – TODO, ale też patrz notatki | |
112 | - 'uwielbiać', # (***) | |
113 | - 'uznać', 'uznawać', # podwójna kontrola – TODO, ale też patrz notatki | |
114 | - 'walor', # possp + compar(jako) – brakuje kontroli? | |
115 | - 'wczołgiwać', # TODO, ale też patrz notatki | |
116 | - 'wegetacja', # possp + compar(jako) – brakuje kontroli? | |
117 | - 'weryfikacja', # np(gen) + compar(jako) – brakuje kontroli? | |
118 | - 'woleć', # cp(gdy) + compar(niż) – brakuje kontroli? | |
119 | - 'współbrzmieć', # dziwna alternacja + dlaczego akurat np jest Foreground, a ncp Background? | |
120 | - 'wybawiać', 'wybawić', # dziwne przypisanie argumentów do fraz w alternacji z koordynacją | |
121 | - 'wykaligrafować', # w XML-u 20200626 jest przedziwna alternacja | |
122 | - 'wypruwać', # dziwne schematy z dwiema pozycjami „flaki” i „(jakieś) flaki” | |
123 | - 'zależeć', # xp(mod[comprepnp(na sposób);advp(mod);lex(prepnp(w,acc),sg,'sposób',atr({adjp(agr)}))]) – dziwna pozycja | |
124 | - 'zapowiedź', # np(gen) + compar(jako) – brakuje kontroli? | |
125 | - 'zastygać', 'zastygnąć', # brakuje kontroli? | |
126 | - 'zatrząść', # np(str) + compar(jak) – brakuje kontroli? | |
127 | - 'zdarzyć', # (***) | |
128 | - 'zwać', # (***) | |
129 | - 'dzwonić', # – dwie lex(prepnp(w,loc))! | |
130 | - 'kapać', # – dwie lex(np(inst))! | |
131 | - 'popukać', # – dwie lex(prepnp(do,gen))! | |
132 | - 'przeczyć', # – dwie lex(np(dat))! | |
133 | - 'pukać', # – dwie lex(prepnp(do,gen))! | |
134 | - 'regenerować', # – dwie lex(np(str))! | |
135 | - 'rosić', # – dwie lex(np(inst))! | |
136 | - 'spychać', # – dwie lex(prepnp(na,acc))! | |
137 | - 'szwankować', # – dwie lex(prepnp(na,loc))! | |
138 | - 'wypchać', # – dwie lex(np(inst))! | |
139 | - 'zapukać', # – dwie lex(prepnp(do,gen))! | |
140 | - 'zepchnąć', # – dwie lex(prepnp(na,acc))! | |
141 | - 'zrosić', # – dwie lex(np(inst))! | |
142 | - ): | |
76 | + try: | |
143 | 77 | entry = Entry(self._subtree, self._entry_meanings, self._meanings, self._frames, self._examples_in, self._examples_out, self._misconnected_out) |
144 | 78 | entry.store(self._meanings, self._stored_positions) |
79 | + except Exception as e: | |
80 | + #raise | |
81 | + traceback.print_exc() | |
82 | + self._errors.append('{}: {} ({})'.format(base, type(e).__name__, str(e))) | |
83 | + # errors reach or exceed 10% of entries, but wait until some entries are read – 1 out of 2 might not yet be a reason to panic ;) | |
84 | + if self._counter >= 100 and len(self._errors) * 10 >= self._counter: | |
85 | + self.endDocument() | |
86 | + raise RuntimeError('too many errors encountered, abandoning ship!') | |
145 | 87 | self._content = '' |
146 | 88 | else: |
147 | 89 | if name == 'title': |
... | ... | @@ -159,4 +101,7 @@ class WalentyTeiHandler(handler.ContentHandler): |
159 | 101 | def endDocument(self): |
160 | 102 | self._examples_out.close() |
161 | 103 | self._misconnected_out.close() |
104 | + print('encountered errors:') | |
105 | + for error in self._errors: | |
106 | + print(error) | |
162 | 107 | |
... | ... |
locale/en/LC_MESSAGES/django.mo
No preview for this file type
locale/en/LC_MESSAGES/django.po
... | ... | @@ -8,7 +8,7 @@ msgid "" |
8 | 8 | msgstr "" |
9 | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2021-01-19 13:57+0100\n" | |
11 | +"POT-Creation-Date: 2021-05-25 13:38+0200\n" | |
12 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
... | ... | @@ -22,20 +22,20 @@ msgstr "" |
22 | 22 | msgid "Hasła" |
23 | 23 | msgstr "Entries" |
24 | 24 | |
25 | -#: common/templates/base.html:51 | |
25 | +#: common/templates/base.html:52 | |
26 | 26 | msgid "Typy fraz" |
27 | 27 | msgstr "Phrase types" |
28 | 28 | |
29 | -#: common/templates/base.html:56 | |
29 | +#: common/templates/base.html:57 | |
30 | 30 | #: dictionary_statistics/templates/dictionary_statistics.html:7 |
31 | 31 | msgid "Statystyki" |
32 | 32 | msgstr "Statistics" |
33 | 33 | |
34 | -#: common/templates/base.html:61 | |
34 | +#: common/templates/base.html:62 | |
35 | 35 | msgid "Pobierz słownik" |
36 | 36 | msgstr "Download dictionary" |
37 | 37 | |
38 | -#: common/templates/base.html:80 | |
38 | +#: common/templates/base.html:81 | |
39 | 39 | msgid "EN" |
40 | 40 | msgstr "PL" |
41 | 41 | |
... | ... | @@ -71,7 +71,7 @@ msgstr "..." |
71 | 71 | msgid "Pobieranie" |
72 | 72 | msgstr "Download" |
73 | 73 | |
74 | -#: entries/autocompletes.py:27 entries/views.py:385 | |
74 | +#: entries/autocompletes.py:27 entries/views.py:384 | |
75 | 75 | msgid "definicja:" |
76 | 76 | msgstr "definition:" |
77 | 77 | |
... | ... | @@ -422,7 +422,7 @@ msgid "frazeologizm w postaci {phrase} zamrożony w postaci <i>{phraseo}</i>" |
422 | 422 | msgstr "{phrase} phraseologism frozen in the form <i>{phraseo}</i>" |
423 | 423 | |
424 | 424 | #: entries/phrase_descriptions/polish_strings.py:9 |
425 | -#: entries/phrase_descriptions/polish_strings.py:336 | |
425 | +#: entries/phrase_descriptions/polish_strings.py:337 | |
426 | 426 | #: entries/polish_strings.py:44 |
427 | 427 | msgid "podmiot" |
428 | 428 | msgstr "subject" |
... | ... | @@ -597,7 +597,7 @@ msgstr "{aspect} %(a2)s %(a1)s" |
597 | 597 | #: entries/phrase_descriptions/polish_strings.py:105 |
598 | 598 | #: entries/phrase_descriptions/polish_strings.py:106 |
599 | 599 | #: entries/phrase_descriptions/polish_strings.py:107 |
600 | -#: entries/phrase_descriptions/polish_strings.py:295 | |
600 | +#: entries/phrase_descriptions/polish_strings.py:296 | |
601 | 601 | #, python-format |
602 | 602 | msgid "%(a1)s" |
603 | 603 | msgstr "%(a1)s" |
... | ... | @@ -661,7 +661,7 @@ msgid "%(a1)s przez spójnik podrzędny <i>{conj}</i>" |
661 | 661 | msgstr "%(a1)s by <i>{conj}</i> subordinating conjunction" |
662 | 662 | |
663 | 663 | #. Translators: wprowadzana |
664 | -#: entries/phrase_descriptions/polish_strings.py:157 | |
664 | +#: entries/phrase_descriptions/polish_strings.py:158 | |
665 | 665 | #, python-format, python-brace-format |
666 | 666 | msgid "" |
667 | 667 | "%(a1)s przez <i>{to}, gdy</i> bądź <i>{to}, gdyby</i> w trybie " |
... | ... | @@ -669,7 +669,7 @@ msgid "" |
669 | 669 | msgstr "%(a1)s by <i>{to}, gdy</i> or <i>{to}, gdyby</i> in conditional mood" |
670 | 670 | |
671 | 671 | #. Translators: wprowadzana |
672 | -#: entries/phrase_descriptions/polish_strings.py:159 | |
672 | +#: entries/phrase_descriptions/polish_strings.py:160 | |
673 | 673 | #, python-format, python-brace-format |
674 | 674 | msgid "" |
675 | 675 | "%(a1)s przez <i>{to}, że</i> bądź dodatkowo <i>{to}, żeby</i> w " |
... | ... | @@ -679,7 +679,7 @@ msgstr "" |
679 | 679 | "constructions" |
680 | 680 | |
681 | 681 | #. Translators: zależna, wprowadzana |
682 | -#: entries/phrase_descriptions/polish_strings.py:161 | |
682 | +#: entries/phrase_descriptions/polish_strings.py:162 | |
683 | 683 | #, python-format, python-brace-format |
684 | 684 | msgid "" |
685 | 685 | "pytajno-%(a1)s %(a2)s przez <i>{to}, co (czy, ile, kto)</i> lub dowolny inny " |
... | ... | @@ -689,7 +689,7 @@ msgstr "" |
689 | 689 | "interrogative pronoun" |
690 | 690 | |
691 | 691 | #. Translators: względna, wprowadzana |
692 | -#: entries/phrase_descriptions/polish_strings.py:163 | |
692 | +#: entries/phrase_descriptions/polish_strings.py:164 | |
693 | 693 | #, python-format, python-brace-format |
694 | 694 | msgid "" |
695 | 695 | "%(a1)s %(a2)s przez <i>{to}, co (gdzie, kto)</i> lub dowolny inny zaimek " |
... | ... | @@ -698,25 +698,25 @@ msgstr "" |
698 | 698 | "%(a1)s, %(a2)s by <i>{to}, co (gdzie, kto)</i> or any other relative pronoun" |
699 | 699 | |
700 | 700 | #. Translators: zależna, wprowadzana |
701 | -#: entries/phrase_descriptions/polish_strings.py:165 | |
701 | +#: entries/phrase_descriptions/polish_strings.py:166 | |
702 | 702 | #, python-format, python-brace-format |
703 | 703 | msgid "pytajno-%(a1)s %(a2)s przez <i>{to}, {conj}</i>" |
704 | 704 | msgstr "interrogative-%(a1)s, %(a2)s by <i>{to}, {conj}</i>" |
705 | 705 | |
706 | 706 | #. Translators: względna, wprowadzana |
707 | -#: entries/phrase_descriptions/polish_strings.py:167 | |
707 | +#: entries/phrase_descriptions/polish_strings.py:168 | |
708 | 708 | #, python-format, python-brace-format |
709 | 709 | msgid "%(a1)s %(a2)s przez <i>{to}, {conj}</i>" |
710 | 710 | msgstr "%(a1)s, %(a2)s by <i>{to}, {conj}</i>" |
711 | 711 | |
712 | 712 | #. Translators: wprowadzana |
713 | -#: entries/phrase_descriptions/polish_strings.py:172 | |
713 | +#: entries/phrase_descriptions/polish_strings.py:173 | |
714 | 714 | #, python-format, python-brace-format |
715 | 715 | msgid "%(a1)s przez <i>{to}, {conj}</i>" |
716 | 716 | msgstr "%(a1)s by <i>{to}, {conj}</i>" |
717 | 717 | |
718 | 718 | #. Translators: wprowadzana |
719 | -#: entries/phrase_descriptions/polish_strings.py:177 | |
719 | +#: entries/phrase_descriptions/polish_strings.py:178 | |
720 | 720 | #, python-format, python-brace-format |
721 | 721 | msgid "" |
722 | 722 | "%(a1)s przez <i>{prep} {to}, gdy</i> bądź <i>{prep} {to}, gdyby</i> w trybie " |
... | ... | @@ -726,7 +726,7 @@ msgstr "" |
726 | 726 | "conditional mood" |
727 | 727 | |
728 | 728 | #. Translators: wprowadzana |
729 | -#: entries/phrase_descriptions/polish_strings.py:179 | |
729 | +#: entries/phrase_descriptions/polish_strings.py:180 | |
730 | 730 | #, python-format, python-brace-format |
731 | 731 | msgid "" |
732 | 732 | "%(a1)s przez <i>{prep} {to}, że</i> bądź dodatkowo <i>{prep} {to}, żeby</i> " |
... | ... | @@ -736,7 +736,7 @@ msgstr "" |
736 | 736 | "negated constructions" |
737 | 737 | |
738 | 738 | #. Translators: zależna, wprowadzana |
739 | -#: entries/phrase_descriptions/polish_strings.py:181 | |
739 | +#: entries/phrase_descriptions/polish_strings.py:182 | |
740 | 740 | #, python-format, python-brace-format |
741 | 741 | msgid "" |
742 | 742 | "pytajno-%(a1)s %(a2)s przez <i>{prep} {to}, co (czy, ile, kto)</i> lub " |
... | ... | @@ -746,7 +746,7 @@ msgstr "" |
746 | 746 | "any other interrogative pronoun" |
747 | 747 | |
748 | 748 | #. Translators: względna, wprowadzana |
749 | -#: entries/phrase_descriptions/polish_strings.py:183 | |
749 | +#: entries/phrase_descriptions/polish_strings.py:184 | |
750 | 750 | #, python-format, python-brace-format |
751 | 751 | msgid "" |
752 | 752 | "%(a1)s %(a2)s przez <i>{prep} {to}, co (gdzie, kto)</i> lub dowolny inny " |
... | ... | @@ -756,132 +756,132 @@ msgstr "" |
756 | 756 | "pronoun" |
757 | 757 | |
758 | 758 | #. Translators: zależna, wprowadzana |
759 | -#: entries/phrase_descriptions/polish_strings.py:185 | |
759 | +#: entries/phrase_descriptions/polish_strings.py:186 | |
760 | 760 | #, python-format, python-brace-format |
761 | 761 | msgid "pytajno-%(a1)s %(a2)s przez <i>{prep} {to}, {conj}</i>" |
762 | 762 | msgstr "interrogative-%(a1)s, %(a2)s by <i>{prep} {to}, {conj}</i>" |
763 | 763 | |
764 | 764 | #. Translators: względna, wprowadzana |
765 | -#: entries/phrase_descriptions/polish_strings.py:187 | |
765 | +#: entries/phrase_descriptions/polish_strings.py:188 | |
766 | 766 | #, python-format, python-brace-format |
767 | 767 | msgid "%(a1)s %(a2)s przez <i>{prep} {to}, {conj}</i>" |
768 | 768 | msgstr "%(a1)s, %(a2)s by <i>{prep} {to}, {conj}</i>" |
769 | 769 | |
770 | 770 | #. Translators: wprowadzana |
771 | -#: entries/phrase_descriptions/polish_strings.py:192 | |
771 | +#: entries/phrase_descriptions/polish_strings.py:193 | |
772 | 772 | #, python-format, python-brace-format |
773 | 773 | msgid "%(a1)s przez <i>{prep} {to}, {conj}</i>" |
774 | 774 | msgstr "%(a1)s by <i>{prep} {to}, {conj}</i>" |
775 | 775 | |
776 | -#: entries/phrase_descriptions/polish_strings.py:198 | |
776 | +#: entries/phrase_descriptions/polish_strings.py:199 | |
777 | 777 | #, python-format |
778 | 778 | msgctxt "fraza przysłówkowa lokatywna/ablatywna/..." |
779 | 779 | msgid "%(a1)s %(a2)s %(a3)s" |
780 | 780 | msgstr "%(a3)s %(a2)s %(a1)s" |
781 | 781 | |
782 | -#: entries/phrase_descriptions/polish_strings.py:200 | |
783 | -#: entries/phrase_descriptions/polish_strings.py:224 | |
784 | -#: entries/phrase_descriptions/polish_strings.py:239 | |
782 | +#: entries/phrase_descriptions/polish_strings.py:201 | |
783 | +#: entries/phrase_descriptions/polish_strings.py:225 | |
784 | +#: entries/phrase_descriptions/polish_strings.py:240 | |
785 | 785 | #: entries/polish_strings.py:101 |
786 | 786 | msgid "(miejsce)" |
787 | 787 | msgstr "(place)" |
788 | 788 | |
789 | -#: entries/phrase_descriptions/polish_strings.py:201 | |
790 | -#: entries/phrase_descriptions/polish_strings.py:225 | |
791 | -#: entries/phrase_descriptions/polish_strings.py:240 | |
789 | +#: entries/phrase_descriptions/polish_strings.py:202 | |
790 | +#: entries/phrase_descriptions/polish_strings.py:226 | |
791 | +#: entries/phrase_descriptions/polish_strings.py:241 | |
792 | 792 | #: entries/polish_strings.py:102 |
793 | 793 | msgid "(miejsce początkowe)" |
794 | 794 | msgstr "(start point)" |
795 | 795 | |
796 | -#: entries/phrase_descriptions/polish_strings.py:202 | |
797 | -#: entries/phrase_descriptions/polish_strings.py:226 | |
798 | -#: entries/phrase_descriptions/polish_strings.py:241 | |
796 | +#: entries/phrase_descriptions/polish_strings.py:203 | |
797 | +#: entries/phrase_descriptions/polish_strings.py:227 | |
798 | +#: entries/phrase_descriptions/polish_strings.py:242 | |
799 | 799 | #: entries/polish_strings.py:103 |
800 | 800 | msgid "(miejsce końcowe)" |
801 | 801 | msgstr "(end point)" |
802 | 802 | |
803 | -#: entries/phrase_descriptions/polish_strings.py:203 | |
804 | -#: entries/phrase_descriptions/polish_strings.py:227 | |
805 | -#: entries/phrase_descriptions/polish_strings.py:242 | |
803 | +#: entries/phrase_descriptions/polish_strings.py:204 | |
804 | +#: entries/phrase_descriptions/polish_strings.py:228 | |
805 | +#: entries/phrase_descriptions/polish_strings.py:243 | |
806 | 806 | #: entries/polish_strings.py:104 |
807 | 807 | msgid "(trasa)" |
808 | 808 | msgstr "(path)" |
809 | 809 | |
810 | -#: entries/phrase_descriptions/polish_strings.py:204 | |
811 | -#: entries/phrase_descriptions/polish_strings.py:228 | |
812 | -#: entries/phrase_descriptions/polish_strings.py:243 | |
810 | +#: entries/phrase_descriptions/polish_strings.py:205 | |
811 | +#: entries/phrase_descriptions/polish_strings.py:229 | |
812 | +#: entries/phrase_descriptions/polish_strings.py:244 | |
813 | 813 | #: entries/polish_strings.py:105 |
814 | 814 | msgid "(czasu)" |
815 | 815 | msgstr "(time)" |
816 | 816 | |
817 | -#: entries/phrase_descriptions/polish_strings.py:205 | |
818 | -#: entries/phrase_descriptions/polish_strings.py:229 | |
819 | -#: entries/phrase_descriptions/polish_strings.py:244 | |
817 | +#: entries/phrase_descriptions/polish_strings.py:206 | |
818 | +#: entries/phrase_descriptions/polish_strings.py:230 | |
819 | +#: entries/phrase_descriptions/polish_strings.py:245 | |
820 | 820 | #: entries/polish_strings.py:106 |
821 | 821 | msgid "(trwania)" |
822 | 822 | msgstr "(duration)" |
823 | 823 | |
824 | -#: entries/phrase_descriptions/polish_strings.py:206 | |
824 | +#: entries/phrase_descriptions/polish_strings.py:207 | |
825 | 825 | #, python-format |
826 | 826 | msgctxt "fraza przysłówkowa" |
827 | 827 | msgid "%(a1)s %(a2)s sposobu" |
828 | 828 | msgstr "%(a2)s %(a1)s describing manner" |
829 | 829 | |
830 | -#: entries/phrase_descriptions/polish_strings.py:207 | |
831 | -#: entries/phrase_descriptions/polish_strings.py:232 | |
832 | -#: entries/phrase_descriptions/polish_strings.py:246 | |
830 | +#: entries/phrase_descriptions/polish_strings.py:208 | |
831 | +#: entries/phrase_descriptions/polish_strings.py:233 | |
832 | +#: entries/phrase_descriptions/polish_strings.py:247 | |
833 | 833 | #: entries/polish_strings.py:108 |
834 | 834 | msgid "(przyczyny)" |
835 | 835 | msgstr "(reason)" |
836 | 836 | |
837 | -#: entries/phrase_descriptions/polish_strings.py:208 | |
838 | -#: entries/phrase_descriptions/polish_strings.py:233 | |
839 | -#: entries/phrase_descriptions/polish_strings.py:247 | |
837 | +#: entries/phrase_descriptions/polish_strings.py:209 | |
838 | +#: entries/phrase_descriptions/polish_strings.py:234 | |
839 | +#: entries/phrase_descriptions/polish_strings.py:248 | |
840 | 840 | #: entries/polish_strings.py:109 |
841 | 841 | msgid "(celu)" |
842 | 842 | msgstr "(goal)" |
843 | 843 | |
844 | -#: entries/phrase_descriptions/polish_strings.py:209 | |
845 | -#: entries/phrase_descriptions/polish_strings.py:234 | |
846 | -#: entries/phrase_descriptions/polish_strings.py:248 | |
844 | +#: entries/phrase_descriptions/polish_strings.py:210 | |
845 | +#: entries/phrase_descriptions/polish_strings.py:235 | |
846 | +#: entries/phrase_descriptions/polish_strings.py:249 | |
847 | 847 | #: entries/polish_strings.py:110 |
848 | 848 | msgid "(narzędzie)" |
849 | 849 | msgstr "(tool)" |
850 | 850 | |
851 | 851 | #. Translators: fraza, lokatywna/ablatywna/... |
852 | 852 | #. Translators: mowa, niezależna |
853 | -#: entries/phrase_descriptions/polish_strings.py:222 | |
854 | -#: entries/phrase_descriptions/polish_strings.py:270 | |
853 | +#: entries/phrase_descriptions/polish_strings.py:223 | |
854 | +#: entries/phrase_descriptions/polish_strings.py:271 | |
855 | 855 | #, python-format |
856 | 856 | msgid "%(a1)s %(a2)s" |
857 | 857 | msgstr "%(a2)s %(a1)s" |
858 | 858 | |
859 | 859 | #. Translators: fraza |
860 | -#: entries/phrase_descriptions/polish_strings.py:231 | |
860 | +#: entries/phrase_descriptions/polish_strings.py:232 | |
861 | 861 | #, python-format |
862 | 862 | msgid "%(a1)s sposobu" |
863 | 863 | msgstr "%(a1)s describing manner" |
864 | 864 | |
865 | -#: entries/phrase_descriptions/polish_strings.py:237 | |
865 | +#: entries/phrase_descriptions/polish_strings.py:238 | |
866 | 866 | #, python-format |
867 | 867 | msgctxt "dowolna fraza lokatywna/ablatywna/..." |
868 | 868 | msgid "%(a1)s %(a2)s %(a3)s" |
869 | 869 | msgstr "%(a1)s %(a3)s %(a2)s" |
870 | 870 | |
871 | -#: entries/phrase_descriptions/polish_strings.py:245 | |
871 | +#: entries/phrase_descriptions/polish_strings.py:246 | |
872 | 872 | #, python-format |
873 | 873 | msgctxt "dowolna fraza" |
874 | 874 | msgid "%(a1)s %(a2)s sposobu" |
875 | 875 | msgstr "%(a1)s %(a2)s describing manner" |
876 | 876 | |
877 | 877 | #. Translators: zaimki, przysłówkowe |
878 | -#: entries/phrase_descriptions/polish_strings.py:253 | |
878 | +#: entries/phrase_descriptions/polish_strings.py:254 | |
879 | 879 | #, python-format |
880 | 880 | msgid "wyłącznie %(a1)s %(a2)s <i>jak</i>, <i>tak</i>" |
881 | 881 | msgstr "only <i>jak</i>, <i>tak</i> %(a2)s %(a1)s" |
882 | 882 | |
883 | 883 | #. Translators: fraza, przysłówkowa, fraza, konstrukcje, przysłówkowe |
884 | -#: entries/phrase_descriptions/polish_strings.py:257 | |
884 | +#: entries/phrase_descriptions/polish_strings.py:258 | |
885 | 885 | #, python-format |
886 | 886 | msgid "" |
887 | 887 | "%(a1)s %(a2)s (%(a3)s z centrum przysłówkowym oraz %(a4)s przyimkowo-%(a5)s " |
... | ... | @@ -891,13 +891,13 @@ msgstr "" |
891 | 891 | "like <i>na pewno</i>, <i>bez mała</i>)" |
892 | 892 | |
893 | 893 | #. Translators: fraza, porównawcza, wprowadzana |
894 | -#: entries/phrase_descriptions/polish_strings.py:261 | |
894 | +#: entries/phrase_descriptions/polish_strings.py:262 | |
895 | 895 | #, python-format, python-brace-format |
896 | 896 | msgid "%(a1)s %(a2)s %(a3)s przez <i>{prep}</i>" |
897 | 897 | msgstr "%(a2)s %(a1)s %(a3)s by <i>{prep}</i>" |
898 | 898 | |
899 | 899 | #. Translators: fraza, niechromatyczna, specyficzna, fraza, realizowana |
900 | -#: entries/phrase_descriptions/polish_strings.py:265 | |
900 | +#: entries/phrase_descriptions/polish_strings.py:266 | |
901 | 901 | #, python-format |
902 | 902 | msgid "" |
903 | 903 | "%(a1)s %(a2)s, czyli %(a3)s %(a4)s rzeczownikowa w przypadku strukturalnym, " |
... | ... | @@ -909,7 +909,7 @@ msgstr "" |
909 | 909 | "uniquely " |
910 | 910 | |
911 | 911 | #. Translators: partykuła, realizująca |
912 | -#: entries/phrase_descriptions/polish_strings.py:274 | |
912 | +#: entries/phrase_descriptions/polish_strings.py:275 | |
913 | 913 | #, python-format |
914 | 914 | msgid "%(a1)s <i>się</i> %(a2)s użycie zwrotne czasownika (<i>sam siebie</i>)" |
915 | 915 | msgstr "" |
... | ... | @@ -917,7 +917,7 @@ msgstr "" |
917 | 917 | "i>)" |
918 | 918 | |
919 | 919 | #. Translators: partykuła, realizująca |
920 | -#: entries/phrase_descriptions/polish_strings.py:278 | |
920 | +#: entries/phrase_descriptions/polish_strings.py:279 | |
921 | 921 | #, python-format |
922 | 922 | msgid "" |
923 | 923 | "%(a1)s <i>się</i> %(a2)s użycie wzajemnościowe czasownika (<i>siebie " |
... | ... | @@ -927,7 +927,7 @@ msgstr "" |
927 | 927 | "each other</i>)" |
928 | 928 | |
929 | 929 | #. Translators: subject |
930 | -#: entries/phrase_descriptions/polish_strings.py:283 | |
930 | +#: entries/phrase_descriptions/polish_strings.py:284 | |
931 | 931 | #, python-format |
932 | 932 | msgid "" |
933 | 933 | "%(a1)s czasownika wymagającego bezokolicznika, którego własności są tożsame " |
... | ... | @@ -937,17 +937,16 @@ msgstr "" |
937 | 937 | "those imposed by the infinitive, including no subject" |
938 | 938 | |
939 | 939 | #. Translators: fraza, posesywna, odpowiadająca |
940 | -#: entries/phrase_descriptions/polish_strings.py:287 | |
941 | -#, python-format | |
940 | +#: entries/phrase_descriptions/polish_strings.py:288 | |
942 | 941 | msgid "" |
943 | 942 | "%(a1)s %(a2)s %(a3)s na pytanie <i>czyj?</i>, np. <i>mój</i>, <i>pański</i>, " |
944 | -"<i>Piotra</i>" | |
943 | +"<i>Anny</i>" | |
945 | 944 | msgstr "" |
946 | -"%(a2)s %(a1)s %(a3)s the question <i>czyj? (whose?)</i>, e.g. <i>mój (my)</" | |
947 | -"i>, <i>pański</i>, <i>Piotra (Peter’s)</i>" | |
945 | +"%(a2)s %(a1)s %(a3)s the question <i>czyj?</i>, e.g. <i>mój</" | |
946 | +"i>, <i>pański</i>, <i>Anny</i>" | |
948 | 947 | |
949 | 948 | #. Translators: fraza, rzeczownikowa, stosowana |
950 | -#: entries/phrase_descriptions/polish_strings.py:292 | |
949 | +#: entries/phrase_descriptions/polish_strings.py:293 | |
951 | 950 | #, python-format |
952 | 951 | msgid "" |
953 | 952 | "%(a1)s przyimkowo-%(a2)s z przyimkiem <i>po</i> %(a3)s w konstrukcjach " |
... | ... | @@ -960,487 +959,487 @@ msgstr "" |
960 | 959 | "locative case (<i>dać każdemu po jabłku</i>), but in the case of numeral " |
961 | 960 | "phrases, accusative case is used (<i>dać każdemu po dwa jabłka</i>)" |
962 | 961 | |
963 | -#: entries/phrase_descriptions/polish_strings.py:314 | |
962 | +#: entries/phrase_descriptions/polish_strings.py:315 | |
964 | 963 | #: entries/polish_strings.py:102 |
965 | 964 | msgid "ablatywna" |
966 | 965 | msgstr "ablative" |
967 | 966 | |
968 | -#: entries/phrase_descriptions/polish_strings.py:314 | |
967 | +#: entries/phrase_descriptions/polish_strings.py:315 | |
969 | 968 | msgid "ablatywnej" |
970 | 969 | msgstr "ablative" |
971 | 970 | |
972 | -#: entries/phrase_descriptions/polish_strings.py:314 | |
971 | +#: entries/phrase_descriptions/polish_strings.py:315 | |
973 | 972 | msgid "ablatywną" |
974 | 973 | msgstr "ablative" |
975 | 974 | |
976 | -#: entries/phrase_descriptions/polish_strings.py:315 | |
975 | +#: entries/phrase_descriptions/polish_strings.py:316 | |
977 | 976 | #: entries/polish_strings.py:103 |
978 | 977 | msgid "adlatywna" |
979 | 978 | msgstr "adlative" |
980 | 979 | |
981 | -#: entries/phrase_descriptions/polish_strings.py:315 | |
980 | +#: entries/phrase_descriptions/polish_strings.py:316 | |
982 | 981 | msgid "adlatywnej" |
983 | 982 | msgstr "adlative" |
984 | 983 | |
985 | -#: entries/phrase_descriptions/polish_strings.py:315 | |
984 | +#: entries/phrase_descriptions/polish_strings.py:316 | |
986 | 985 | msgid "adlatywną" |
987 | 986 | msgstr "adlative" |
988 | 987 | |
989 | -#: entries/phrase_descriptions/polish_strings.py:316 | |
988 | +#: entries/phrase_descriptions/polish_strings.py:317 | |
990 | 989 | #: entries/polish_strings.py:124 |
991 | 990 | msgid "bezokolicznikowa" |
992 | 991 | msgstr "infinitival" |
993 | 992 | |
994 | -#: entries/phrase_descriptions/polish_strings.py:316 | |
993 | +#: entries/phrase_descriptions/polish_strings.py:317 | |
995 | 994 | msgid "bezokolicznikowej" |
996 | 995 | msgstr "infinitival" |
997 | 996 | |
998 | -#: entries/phrase_descriptions/polish_strings.py:316 | |
997 | +#: entries/phrase_descriptions/polish_strings.py:317 | |
999 | 998 | msgid "bezokolicznikową" |
1000 | 999 | msgstr "infinitival" |
1001 | 1000 | |
1002 | -#: entries/phrase_descriptions/polish_strings.py:317 | |
1001 | +#: entries/phrase_descriptions/polish_strings.py:318 | |
1003 | 1002 | #: entries/polish_strings.py:109 |
1004 | 1003 | msgid "destynacyjna" |
1005 | 1004 | msgstr "destinative" |
1006 | 1005 | |
1007 | -#: entries/phrase_descriptions/polish_strings.py:317 | |
1006 | +#: entries/phrase_descriptions/polish_strings.py:318 | |
1008 | 1007 | msgid "destynacyjnej" |
1009 | 1008 | msgstr "destinative" |
1010 | 1009 | |
1011 | -#: entries/phrase_descriptions/polish_strings.py:317 | |
1010 | +#: entries/phrase_descriptions/polish_strings.py:318 | |
1012 | 1011 | msgid "destynacyjną" |
1013 | 1012 | msgstr "destinative" |
1014 | 1013 | |
1015 | -#: entries/phrase_descriptions/polish_strings.py:318 | |
1014 | +#: entries/phrase_descriptions/polish_strings.py:319 | |
1016 | 1015 | msgid "dokonana" |
1017 | 1016 | msgstr "perfect" |
1018 | 1017 | |
1019 | -#: entries/phrase_descriptions/polish_strings.py:318 | |
1018 | +#: entries/phrase_descriptions/polish_strings.py:319 | |
1020 | 1019 | msgid "dokonanej" |
1021 | 1020 | msgstr "perfect" |
1022 | 1021 | |
1023 | -#: entries/phrase_descriptions/polish_strings.py:318 | |
1022 | +#: entries/phrase_descriptions/polish_strings.py:319 | |
1024 | 1023 | msgid "dokonaną" |
1025 | 1024 | msgstr "perfect" |
1026 | 1025 | |
1027 | -#: entries/phrase_descriptions/polish_strings.py:319 | |
1026 | +#: entries/phrase_descriptions/polish_strings.py:320 | |
1028 | 1027 | msgid "dowolna" |
1029 | 1028 | msgstr "any" |
1030 | 1029 | |
1031 | -#: entries/phrase_descriptions/polish_strings.py:319 | |
1030 | +#: entries/phrase_descriptions/polish_strings.py:320 | |
1032 | 1031 | msgid "dowolnej" |
1033 | 1032 | msgstr "any" |
1034 | 1033 | |
1035 | -#: entries/phrase_descriptions/polish_strings.py:319 | |
1034 | +#: entries/phrase_descriptions/polish_strings.py:320 | |
1036 | 1035 | msgid "dowolną" |
1037 | 1036 | msgstr "any" |
1038 | 1037 | |
1039 | -#: entries/phrase_descriptions/polish_strings.py:320 | |
1038 | +#: entries/phrase_descriptions/polish_strings.py:321 | |
1040 | 1039 | #: entries/polish_strings.py:106 |
1041 | 1040 | msgid "duratywna" |
1042 | 1041 | msgstr "durative" |
1043 | 1042 | |
1044 | -#: entries/phrase_descriptions/polish_strings.py:320 | |
1043 | +#: entries/phrase_descriptions/polish_strings.py:321 | |
1045 | 1044 | msgid "duratywnej" |
1046 | 1045 | msgstr "durative" |
1047 | 1046 | |
1048 | -#: entries/phrase_descriptions/polish_strings.py:320 | |
1047 | +#: entries/phrase_descriptions/polish_strings.py:321 | |
1049 | 1048 | msgid "duratywną" |
1050 | 1049 | msgstr "durative" |
1051 | 1050 | |
1052 | -#: entries/phrase_descriptions/polish_strings.py:321 | |
1051 | +#: entries/phrase_descriptions/polish_strings.py:322 | |
1053 | 1052 | msgid "fraza" |
1054 | 1053 | msgstr "phrase" |
1055 | 1054 | |
1056 | -#: entries/phrase_descriptions/polish_strings.py:321 | |
1055 | +#: entries/phrase_descriptions/polish_strings.py:322 | |
1057 | 1056 | msgid "frazy" |
1058 | 1057 | msgstr "phrase" |
1059 | 1058 | |
1060 | -#: entries/phrase_descriptions/polish_strings.py:321 | |
1059 | +#: entries/phrase_descriptions/polish_strings.py:322 | |
1061 | 1060 | msgid "frazą" |
1062 | 1061 | msgstr "phrase" |
1063 | 1062 | |
1064 | -#: entries/phrase_descriptions/polish_strings.py:322 | |
1063 | +#: entries/phrase_descriptions/polish_strings.py:323 | |
1065 | 1064 | #: entries/polish_strings.py:110 |
1066 | 1065 | msgid "instrumentalna" |
1067 | 1066 | msgstr "instrumental" |
1068 | 1067 | |
1069 | -#: entries/phrase_descriptions/polish_strings.py:322 | |
1068 | +#: entries/phrase_descriptions/polish_strings.py:323 | |
1070 | 1069 | msgid "instrumentalnej" |
1071 | 1070 | msgstr "instrumental" |
1072 | 1071 | |
1073 | -#: entries/phrase_descriptions/polish_strings.py:322 | |
1072 | +#: entries/phrase_descriptions/polish_strings.py:323 | |
1074 | 1073 | msgid "instrumentalną" |
1075 | 1074 | msgstr "instrumental" |
1076 | 1075 | |
1077 | -#: entries/phrase_descriptions/polish_strings.py:323 | |
1076 | +#: entries/phrase_descriptions/polish_strings.py:324 | |
1078 | 1077 | #: entries/polish_strings.py:132 |
1079 | 1078 | msgid "imiesłowowa" |
1080 | 1079 | msgstr "participal" |
1081 | 1080 | |
1082 | -#: entries/phrase_descriptions/polish_strings.py:323 | |
1081 | +#: entries/phrase_descriptions/polish_strings.py:324 | |
1083 | 1082 | msgid "imiesłowowej" |
1084 | 1083 | msgstr "participal" |
1085 | 1084 | |
1086 | -#: entries/phrase_descriptions/polish_strings.py:323 | |
1085 | +#: entries/phrase_descriptions/polish_strings.py:324 | |
1087 | 1086 | msgid "imiesłowową" |
1088 | 1087 | msgstr "participal" |
1089 | 1088 | |
1090 | -#: entries/phrase_descriptions/polish_strings.py:324 | |
1089 | +#: entries/phrase_descriptions/polish_strings.py:325 | |
1091 | 1090 | #: entries/polish_strings.py:108 |
1092 | 1091 | msgid "kauzatywna" |
1093 | 1092 | msgstr "causative" |
1094 | 1093 | |
1095 | -#: entries/phrase_descriptions/polish_strings.py:324 | |
1094 | +#: entries/phrase_descriptions/polish_strings.py:325 | |
1096 | 1095 | msgid "kauzatywnej" |
1097 | 1096 | msgstr "causative" |
1098 | 1097 | |
1099 | -#: entries/phrase_descriptions/polish_strings.py:324 | |
1098 | +#: entries/phrase_descriptions/polish_strings.py:325 | |
1100 | 1099 | msgid "kauzatywną" |
1101 | 1100 | msgstr "causative" |
1102 | 1101 | |
1103 | -#: entries/phrase_descriptions/polish_strings.py:325 | |
1102 | +#: entries/phrase_descriptions/polish_strings.py:326 | |
1104 | 1103 | msgid "konstrukcje" |
1105 | 1104 | msgstr "constructions" |
1106 | 1105 | |
1107 | -#: entries/phrase_descriptions/polish_strings.py:325 | |
1106 | +#: entries/phrase_descriptions/polish_strings.py:326 | |
1108 | 1107 | msgid "konstrukcyj" |
1109 | 1108 | msgstr "constructions" |
1110 | 1109 | |
1111 | -#: entries/phrase_descriptions/polish_strings.py:325 | |
1110 | +#: entries/phrase_descriptions/polish_strings.py:326 | |
1112 | 1111 | msgid "konstrukcjami" |
1113 | 1112 | msgstr "constructions" |
1114 | 1113 | |
1115 | -#: entries/phrase_descriptions/polish_strings.py:326 | |
1114 | +#: entries/phrase_descriptions/polish_strings.py:327 | |
1116 | 1115 | #: entries/polish_strings.py:129 |
1117 | 1116 | msgid "liczebnikowa" |
1118 | 1117 | msgstr "numeral" |
1119 | 1118 | |
1120 | -#: entries/phrase_descriptions/polish_strings.py:326 | |
1119 | +#: entries/phrase_descriptions/polish_strings.py:327 | |
1121 | 1120 | msgid "liczebnikowej" |
1122 | 1121 | msgstr "numeral" |
1123 | 1122 | |
1124 | -#: entries/phrase_descriptions/polish_strings.py:326 | |
1123 | +#: entries/phrase_descriptions/polish_strings.py:327 | |
1125 | 1124 | msgid "liczebnikową" |
1126 | 1125 | msgstr "numeral" |
1127 | 1126 | |
1128 | -#: entries/phrase_descriptions/polish_strings.py:327 | |
1127 | +#: entries/phrase_descriptions/polish_strings.py:328 | |
1129 | 1128 | #: entries/polish_strings.py:101 |
1130 | 1129 | msgid "lokatywna" |
1131 | 1130 | msgstr "locative" |
1132 | 1131 | |
1133 | -#: entries/phrase_descriptions/polish_strings.py:327 | |
1132 | +#: entries/phrase_descriptions/polish_strings.py:328 | |
1134 | 1133 | msgid "lokatywnej" |
1135 | 1134 | msgstr "locative" |
1136 | 1135 | |
1137 | -#: entries/phrase_descriptions/polish_strings.py:327 | |
1136 | +#: entries/phrase_descriptions/polish_strings.py:328 | |
1138 | 1137 | msgid "lokatywną" |
1139 | 1138 | msgstr "locative" |
1140 | 1139 | |
1141 | -#: entries/phrase_descriptions/polish_strings.py:328 | |
1140 | +#: entries/phrase_descriptions/polish_strings.py:329 | |
1142 | 1141 | msgid "mowa" |
1143 | 1142 | msgstr "speech" |
1144 | 1143 | |
1145 | -#: entries/phrase_descriptions/polish_strings.py:328 | |
1144 | +#: entries/phrase_descriptions/polish_strings.py:329 | |
1146 | 1145 | msgid "mowy" |
1147 | 1146 | msgstr "speech" |
1148 | 1147 | |
1149 | -#: entries/phrase_descriptions/polish_strings.py:328 | |
1148 | +#: entries/phrase_descriptions/polish_strings.py:329 | |
1150 | 1149 | msgid "mową" |
1151 | 1150 | msgstr "speech" |
1152 | 1151 | |
1153 | -#: entries/phrase_descriptions/polish_strings.py:329 | |
1152 | +#: entries/phrase_descriptions/polish_strings.py:330 | |
1154 | 1153 | #: entries/polish_strings.py:127 |
1155 | 1154 | msgid "niechromatyczna" |
1156 | 1155 | msgstr "nonchromatic" |
1157 | 1156 | |
1158 | -#: entries/phrase_descriptions/polish_strings.py:329 | |
1157 | +#: entries/phrase_descriptions/polish_strings.py:330 | |
1159 | 1158 | msgid "niechromatycznej" |
1160 | 1159 | msgstr "nonchromatic" |
1161 | 1160 | |
1162 | -#: entries/phrase_descriptions/polish_strings.py:329 | |
1161 | +#: entries/phrase_descriptions/polish_strings.py:330 | |
1163 | 1162 | msgid "niechromatyczną" |
1164 | 1163 | msgstr "nonchromatic" |
1165 | 1164 | |
1166 | -#: entries/phrase_descriptions/polish_strings.py:330 | |
1165 | +#: entries/phrase_descriptions/polish_strings.py:331 | |
1167 | 1166 | msgid "niedokonana" |
1168 | 1167 | msgstr "imperfect" |
1169 | 1168 | |
1170 | -#: entries/phrase_descriptions/polish_strings.py:330 | |
1169 | +#: entries/phrase_descriptions/polish_strings.py:331 | |
1171 | 1170 | msgid "niedokonanej" |
1172 | 1171 | msgstr "imperfect" |
1173 | 1172 | |
1174 | -#: entries/phrase_descriptions/polish_strings.py:330 | |
1173 | +#: entries/phrase_descriptions/polish_strings.py:331 | |
1175 | 1174 | msgid "niedokonaną" |
1176 | 1175 | msgstr "imperfect" |
1177 | 1176 | |
1178 | -#: entries/phrase_descriptions/polish_strings.py:331 | |
1177 | +#: entries/phrase_descriptions/polish_strings.py:332 | |
1179 | 1178 | msgid "niezależna" |
1180 | 1179 | msgstr "direct" |
1181 | 1180 | |
1182 | -#: entries/phrase_descriptions/polish_strings.py:331 | |
1181 | +#: entries/phrase_descriptions/polish_strings.py:332 | |
1183 | 1182 | msgid "niezależnej" |
1184 | 1183 | msgstr "direct" |
1185 | 1184 | |
1186 | -#: entries/phrase_descriptions/polish_strings.py:331 | |
1185 | +#: entries/phrase_descriptions/polish_strings.py:332 | |
1187 | 1186 | msgid "niezależną" |
1188 | 1187 | msgstr "direct" |
1189 | 1188 | |
1190 | -#: entries/phrase_descriptions/polish_strings.py:332 | |
1189 | +#: entries/phrase_descriptions/polish_strings.py:333 | |
1191 | 1190 | msgid "odpowiadająca" |
1192 | 1191 | msgstr "answering" |
1193 | 1192 | |
1194 | -#: entries/phrase_descriptions/polish_strings.py:332 | |
1193 | +#: entries/phrase_descriptions/polish_strings.py:333 | |
1195 | 1194 | msgid "odpowiadającej" |
1196 | 1195 | msgstr "answering" |
1197 | 1196 | |
1198 | -#: entries/phrase_descriptions/polish_strings.py:332 | |
1197 | +#: entries/phrase_descriptions/polish_strings.py:333 | |
1199 | 1198 | msgid "odpowiadającą" |
1200 | 1199 | msgstr "answering" |
1201 | 1200 | |
1202 | -#: entries/phrase_descriptions/polish_strings.py:333 | |
1201 | +#: entries/phrase_descriptions/polish_strings.py:334 | |
1203 | 1202 | msgid "odsłownikowa" |
1204 | 1203 | msgstr "gerundial" |
1205 | 1204 | |
1206 | -#: entries/phrase_descriptions/polish_strings.py:333 | |
1205 | +#: entries/phrase_descriptions/polish_strings.py:334 | |
1207 | 1206 | msgid "odsłownikowej" |
1208 | 1207 | msgstr "gerundial" |
1209 | 1208 | |
1210 | -#: entries/phrase_descriptions/polish_strings.py:333 | |
1209 | +#: entries/phrase_descriptions/polish_strings.py:334 | |
1211 | 1210 | msgid "odsłownikową" |
1212 | 1211 | msgstr "gerundial" |
1213 | 1212 | |
1214 | -#: entries/phrase_descriptions/polish_strings.py:334 | |
1213 | +#: entries/phrase_descriptions/polish_strings.py:335 | |
1215 | 1214 | #: entries/polish_strings.py:139 |
1216 | 1215 | msgid "partykuła" |
1217 | 1216 | msgstr "particle" |
1218 | 1217 | |
1219 | -#: entries/phrase_descriptions/polish_strings.py:334 | |
1218 | +#: entries/phrase_descriptions/polish_strings.py:335 | |
1220 | 1219 | msgid "partykuły" |
1221 | 1220 | msgstr "particle" |
1222 | 1221 | |
1223 | -#: entries/phrase_descriptions/polish_strings.py:334 | |
1222 | +#: entries/phrase_descriptions/polish_strings.py:335 | |
1224 | 1223 | msgid "partykułą" |
1225 | 1224 | msgstr "particle" |
1226 | 1225 | |
1227 | -#: entries/phrase_descriptions/polish_strings.py:335 | |
1226 | +#: entries/phrase_descriptions/polish_strings.py:336 | |
1228 | 1227 | #: entries/polish_strings.py:104 |
1229 | 1228 | msgid "perlatywna" |
1230 | 1229 | msgstr "perlative" |
1231 | 1230 | |
1232 | -#: entries/phrase_descriptions/polish_strings.py:335 | |
1231 | +#: entries/phrase_descriptions/polish_strings.py:336 | |
1233 | 1232 | msgid "perlatywnej" |
1234 | 1233 | msgstr "perlative" |
1235 | 1234 | |
1236 | -#: entries/phrase_descriptions/polish_strings.py:335 | |
1235 | +#: entries/phrase_descriptions/polish_strings.py:336 | |
1237 | 1236 | msgid "perlatywną" |
1238 | 1237 | msgstr "perlative" |
1239 | 1238 | |
1240 | -#: entries/phrase_descriptions/polish_strings.py:336 | |
1239 | +#: entries/phrase_descriptions/polish_strings.py:337 | |
1241 | 1240 | msgid "podmiotu" |
1242 | 1241 | msgstr "subject" |
1243 | 1242 | |
1244 | -#: entries/phrase_descriptions/polish_strings.py:336 | |
1243 | +#: entries/phrase_descriptions/polish_strings.py:337 | |
1245 | 1244 | msgid "podmiotem" |
1246 | 1245 | msgstr "subject" |
1247 | 1246 | |
1248 | -#: entries/phrase_descriptions/polish_strings.py:337 | |
1247 | +#: entries/phrase_descriptions/polish_strings.py:338 | |
1249 | 1248 | #: entries/polish_strings.py:131 |
1250 | 1249 | msgid "posesywna" |
1251 | 1250 | msgstr "possesive" |
1252 | 1251 | |
1253 | -#: entries/phrase_descriptions/polish_strings.py:337 | |
1252 | +#: entries/phrase_descriptions/polish_strings.py:338 | |
1254 | 1253 | msgid "posesywnej" |
1255 | 1254 | msgstr "possesive" |
1256 | 1255 | |
1257 | -#: entries/phrase_descriptions/polish_strings.py:337 | |
1256 | +#: entries/phrase_descriptions/polish_strings.py:338 | |
1258 | 1257 | msgid "posesywną" |
1259 | 1258 | msgstr "possesive" |
1260 | 1259 | |
1261 | -#: entries/phrase_descriptions/polish_strings.py:338 | |
1260 | +#: entries/phrase_descriptions/polish_strings.py:339 | |
1262 | 1261 | #: entries/polish_strings.py:117 |
1263 | 1262 | msgid "porównawcza" |
1264 | 1263 | msgstr "comparative" |
1265 | 1264 | |
1266 | -#: entries/phrase_descriptions/polish_strings.py:338 | |
1265 | +#: entries/phrase_descriptions/polish_strings.py:339 | |
1267 | 1266 | msgid "porównawczej" |
1268 | 1267 | msgstr "comparative" |
1269 | 1268 | |
1270 | -#: entries/phrase_descriptions/polish_strings.py:338 | |
1269 | +#: entries/phrase_descriptions/polish_strings.py:339 | |
1271 | 1270 | msgid "porównawczą" |
1272 | 1271 | msgstr "comparative" |
1273 | 1272 | |
1274 | -#: entries/phrase_descriptions/polish_strings.py:339 | |
1273 | +#: entries/phrase_descriptions/polish_strings.py:340 | |
1275 | 1274 | #: entries/polish_strings.py:115 |
1276 | 1275 | msgid "przymiotnikowa" |
1277 | 1276 | msgstr "adjectival" |
1278 | 1277 | |
1279 | -#: entries/phrase_descriptions/polish_strings.py:339 | |
1278 | +#: entries/phrase_descriptions/polish_strings.py:340 | |
1280 | 1279 | msgid "przymiotnikowej" |
1281 | 1280 | msgstr "adjectival" |
1282 | 1281 | |
1283 | -#: entries/phrase_descriptions/polish_strings.py:339 | |
1282 | +#: entries/phrase_descriptions/polish_strings.py:340 | |
1284 | 1283 | msgid "przymiotnikową" |
1285 | 1284 | msgstr "adjectival" |
1286 | 1285 | |
1287 | -#: entries/phrase_descriptions/polish_strings.py:340 | |
1286 | +#: entries/phrase_descriptions/polish_strings.py:341 | |
1288 | 1287 | #: entries/polish_strings.py:116 |
1289 | 1288 | msgid "przysłówkowa" |
1290 | 1289 | msgstr "adverbial" |
1291 | 1290 | |
1292 | -#: entries/phrase_descriptions/polish_strings.py:340 | |
1291 | +#: entries/phrase_descriptions/polish_strings.py:341 | |
1293 | 1292 | msgid "przysłówkowej" |
1294 | 1293 | msgstr "adverbial" |
1295 | 1294 | |
1296 | -#: entries/phrase_descriptions/polish_strings.py:340 | |
1295 | +#: entries/phrase_descriptions/polish_strings.py:341 | |
1297 | 1296 | msgid "przysłówkową" |
1298 | 1297 | msgstr "adverbial" |
1299 | 1298 | |
1300 | -#: entries/phrase_descriptions/polish_strings.py:341 | |
1299 | +#: entries/phrase_descriptions/polish_strings.py:342 | |
1301 | 1300 | msgid "przysłówkowe" |
1302 | 1301 | msgstr "adverbial" |
1303 | 1302 | |
1304 | -#: entries/phrase_descriptions/polish_strings.py:341 | |
1303 | +#: entries/phrase_descriptions/polish_strings.py:342 | |
1305 | 1304 | msgid "przysłówkowych" |
1306 | 1305 | msgstr "adverbial" |
1307 | 1306 | |
1308 | -#: entries/phrase_descriptions/polish_strings.py:341 | |
1307 | +#: entries/phrase_descriptions/polish_strings.py:342 | |
1309 | 1308 | msgid "przysłówkowymi" |
1310 | 1309 | msgstr "adverbial" |
1311 | 1310 | |
1312 | -#: entries/phrase_descriptions/polish_strings.py:342 | |
1311 | +#: entries/phrase_descriptions/polish_strings.py:343 | |
1313 | 1312 | msgid "realizowana" |
1314 | 1313 | msgstr "realised" |
1315 | 1314 | |
1316 | -#: entries/phrase_descriptions/polish_strings.py:342 | |
1315 | +#: entries/phrase_descriptions/polish_strings.py:343 | |
1317 | 1316 | msgid "realizowanej" |
1318 | 1317 | msgstr "realised" |
1319 | 1318 | |
1320 | -#: entries/phrase_descriptions/polish_strings.py:342 | |
1319 | +#: entries/phrase_descriptions/polish_strings.py:343 | |
1321 | 1320 | msgid "realizowaną" |
1322 | 1321 | msgstr "realised" |
1323 | 1322 | |
1324 | -#: entries/phrase_descriptions/polish_strings.py:343 | |
1323 | +#: entries/phrase_descriptions/polish_strings.py:344 | |
1325 | 1324 | msgid "realizująca" |
1326 | 1325 | msgstr "realising" |
1327 | 1326 | |
1328 | -#: entries/phrase_descriptions/polish_strings.py:343 | |
1327 | +#: entries/phrase_descriptions/polish_strings.py:344 | |
1329 | 1328 | msgid "realizującej" |
1330 | 1329 | msgstr "realising" |
1331 | 1330 | |
1332 | -#: entries/phrase_descriptions/polish_strings.py:343 | |
1331 | +#: entries/phrase_descriptions/polish_strings.py:344 | |
1333 | 1332 | msgid "realizującą" |
1334 | 1333 | msgstr "realising" |
1335 | 1334 | |
1336 | -#: entries/phrase_descriptions/polish_strings.py:344 | |
1335 | +#: entries/phrase_descriptions/polish_strings.py:345 | |
1337 | 1336 | #: entries/polish_strings.py:128 |
1338 | 1337 | msgid "rzeczownikowa" |
1339 | 1338 | msgstr "nominal" |
1340 | 1339 | |
1341 | -#: entries/phrase_descriptions/polish_strings.py:344 | |
1340 | +#: entries/phrase_descriptions/polish_strings.py:345 | |
1342 | 1341 | msgid "rzeczownikowej" |
1343 | 1342 | msgstr "nominal" |
1344 | 1343 | |
1345 | -#: entries/phrase_descriptions/polish_strings.py:344 | |
1344 | +#: entries/phrase_descriptions/polish_strings.py:345 | |
1346 | 1345 | msgid "rzeczownikową" |
1347 | 1346 | msgstr "nominal" |
1348 | 1347 | |
1349 | -#: entries/phrase_descriptions/polish_strings.py:345 | |
1348 | +#: entries/phrase_descriptions/polish_strings.py:346 | |
1350 | 1349 | msgid "specyficzna" |
1351 | 1350 | msgstr "specific" |
1352 | 1351 | |
1353 | -#: entries/phrase_descriptions/polish_strings.py:345 | |
1352 | +#: entries/phrase_descriptions/polish_strings.py:346 | |
1354 | 1353 | msgid "specyficznej" |
1355 | 1354 | msgstr "specific" |
1356 | 1355 | |
1357 | -#: entries/phrase_descriptions/polish_strings.py:345 | |
1356 | +#: entries/phrase_descriptions/polish_strings.py:346 | |
1358 | 1357 | msgid "specyficzną" |
1359 | 1358 | msgstr "specific" |
1360 | 1359 | |
1361 | -#: entries/phrase_descriptions/polish_strings.py:346 | |
1360 | +#: entries/phrase_descriptions/polish_strings.py:347 | |
1362 | 1361 | msgid "stosowana" |
1363 | 1362 | msgstr "used" |
1364 | 1363 | |
1365 | -#: entries/phrase_descriptions/polish_strings.py:346 | |
1364 | +#: entries/phrase_descriptions/polish_strings.py:347 | |
1366 | 1365 | msgid "stosowanej" |
1367 | 1366 | msgstr "used" |
1368 | 1367 | |
1369 | -#: entries/phrase_descriptions/polish_strings.py:346 | |
1368 | +#: entries/phrase_descriptions/polish_strings.py:347 | |
1370 | 1369 | msgid "stosowaną" |
1371 | 1370 | msgstr "used" |
1372 | 1371 | |
1373 | -#: entries/phrase_descriptions/polish_strings.py:347 | |
1372 | +#: entries/phrase_descriptions/polish_strings.py:348 | |
1374 | 1373 | #: entries/polish_strings.py:105 |
1375 | 1374 | msgid "temporalna" |
1376 | 1375 | msgstr "temporal" |
1377 | 1376 | |
1378 | -#: entries/phrase_descriptions/polish_strings.py:347 | |
1377 | +#: entries/phrase_descriptions/polish_strings.py:348 | |
1379 | 1378 | msgid "temporalnej" |
1380 | 1379 | msgstr "temporal" |
1381 | 1380 | |
1382 | -#: entries/phrase_descriptions/polish_strings.py:347 | |
1381 | +#: entries/phrase_descriptions/polish_strings.py:348 | |
1383 | 1382 | msgid "temporalną" |
1384 | 1383 | msgstr "temporal" |
1385 | 1384 | |
1386 | -#: entries/phrase_descriptions/polish_strings.py:348 | |
1385 | +#: entries/phrase_descriptions/polish_strings.py:349 | |
1387 | 1386 | msgid "wprowadzana" |
1388 | 1387 | msgstr "introduced" |
1389 | 1388 | |
1390 | -#: entries/phrase_descriptions/polish_strings.py:348 | |
1389 | +#: entries/phrase_descriptions/polish_strings.py:349 | |
1391 | 1390 | msgid "wprowadzanej" |
1392 | 1391 | msgstr "introduced" |
1393 | 1392 | |
1394 | -#: entries/phrase_descriptions/polish_strings.py:348 | |
1393 | +#: entries/phrase_descriptions/polish_strings.py:349 | |
1395 | 1394 | msgid "wprowadzaną" |
1396 | 1395 | msgstr "introduced" |
1397 | 1396 | |
1398 | -#: entries/phrase_descriptions/polish_strings.py:349 | |
1397 | +#: entries/phrase_descriptions/polish_strings.py:350 | |
1399 | 1398 | msgid "względna" |
1400 | 1399 | msgstr "relative" |
1401 | 1400 | |
1402 | -#: entries/phrase_descriptions/polish_strings.py:349 | |
1401 | +#: entries/phrase_descriptions/polish_strings.py:350 | |
1403 | 1402 | msgid "względnej" |
1404 | 1403 | msgstr "relative" |
1405 | 1404 | |
1406 | -#: entries/phrase_descriptions/polish_strings.py:349 | |
1405 | +#: entries/phrase_descriptions/polish_strings.py:350 | |
1407 | 1406 | msgid "względną" |
1408 | 1407 | msgstr "relative" |
1409 | 1408 | |
1410 | -#: entries/phrase_descriptions/polish_strings.py:350 | |
1409 | +#: entries/phrase_descriptions/polish_strings.py:351 | |
1411 | 1410 | msgid "zaimki" |
1412 | 1411 | msgstr "pronouns" |
1413 | 1412 | |
1414 | -#: entries/phrase_descriptions/polish_strings.py:350 | |
1413 | +#: entries/phrase_descriptions/polish_strings.py:351 | |
1415 | 1414 | msgid "zaimków" |
1416 | 1415 | msgstr "pronouns" |
1417 | 1416 | |
1418 | -#: entries/phrase_descriptions/polish_strings.py:350 | |
1417 | +#: entries/phrase_descriptions/polish_strings.py:351 | |
1419 | 1418 | msgid "zaimkami" |
1420 | 1419 | msgstr "pronouns" |
1421 | 1420 | |
1422 | -#: entries/phrase_descriptions/polish_strings.py:351 | |
1421 | +#: entries/phrase_descriptions/polish_strings.py:352 | |
1423 | 1422 | msgid "zależna" |
1424 | 1423 | msgstr "dependent" |
1425 | 1424 | |
1426 | -#: entries/phrase_descriptions/polish_strings.py:351 | |
1425 | +#: entries/phrase_descriptions/polish_strings.py:352 | |
1427 | 1426 | msgid "zależnej" |
1428 | 1427 | msgstr "dependent" |
1429 | 1428 | |
1430 | -#: entries/phrase_descriptions/polish_strings.py:351 | |
1429 | +#: entries/phrase_descriptions/polish_strings.py:352 | |
1431 | 1430 | msgid "zależną" |
1432 | 1431 | msgstr "dependent" |
1433 | 1432 | |
1434 | -#: entries/phrase_descriptions/polish_strings.py:352 | |
1433 | +#: entries/phrase_descriptions/polish_strings.py:353 | |
1435 | 1434 | #: entries/polish_strings.py:119 |
1436 | 1435 | msgid "zdaniowa" |
1437 | 1436 | msgstr "clause" |
1438 | 1437 | |
1439 | -#: entries/phrase_descriptions/polish_strings.py:352 | |
1438 | +#: entries/phrase_descriptions/polish_strings.py:353 | |
1440 | 1439 | msgid "zdaniowej" |
1441 | 1440 | msgstr "clause" |
1442 | 1441 | |
1443 | -#: entries/phrase_descriptions/polish_strings.py:352 | |
1442 | +#: entries/phrase_descriptions/polish_strings.py:353 | |
1444 | 1443 | msgid "zdaniową" |
1445 | 1444 | msgstr "clause" |
1446 | 1445 | |
... | ... | @@ -1942,11 +1941,19 @@ msgstr "good" |
1942 | 1941 | msgid "Ostatnio oglądane" |
1943 | 1942 | msgstr "Last visited" |
1944 | 1943 | |
1945 | -#: entries/templates/entries.html:49 | |
1944 | +#: entries/templates/entries.html:45 | |
1945 | +msgid "Opcje" | |
1946 | +msgstr "Options" | |
1947 | + | |
1948 | +#: entries/templates/entries.html:51 | |
1949 | +msgid "Wyświetlaj opisy realizacji" | |
1950 | +msgstr "Show realisation descriptions" | |
1951 | + | |
1952 | +#: entries/templates/entries.html:65 | |
1946 | 1953 | msgid "Filtrowanie" |
1947 | 1954 | msgstr "Filtering" |
1948 | 1955 | |
1949 | -#: entries/templates/entries.html:67 | |
1956 | +#: entries/templates/entries.html:83 | |
1950 | 1957 | msgid "Filtrowanie haseł" |
1951 | 1958 | msgstr "Entry filtering" |
1952 | 1959 | |
... | ... | @@ -1980,22 +1987,22 @@ msgstr "Source" |
1980 | 1987 | msgid "Brak przykładów" |
1981 | 1988 | msgstr "No examples" |
1982 | 1989 | |
1983 | -#: entries/views.py:373 | |
1990 | +#: entries/views.py:372 | |
1984 | 1991 | msgid "" |
1985 | 1992 | "Realizacja tego argumentu w zdaniu powinna być powiązana jakąkolwiek relacją" |
1986 | 1993 | msgstr "Realisation of this argument in the sentence should be in any relation" |
1987 | 1994 | |
1988 | -#: entries/views.py:375 | |
1995 | +#: entries/views.py:374 | |
1989 | 1996 | msgid "" |
1990 | 1997 | "Realizacja tego argumentu w zdaniu powinna być powiązana relacją <i>{}</i>" |
1991 | 1998 | msgstr "" |
1992 | 1999 | "Realisation of this argument in the sentence should be in <i>{}</i> relation" |
1993 | 2000 | |
1994 | -#: entries/views.py:376 | |
2001 | +#: entries/views.py:375 | |
1995 | 2002 | msgid "z realizacją argumentu <i>{}</i>." |
1996 | 2003 | msgstr "with realisation of the <i>{}</i> argument." |
1997 | 2004 | |
1998 | -#: entries/views.py:389 | |
2005 | +#: entries/views.py:388 | |
1999 | 2006 | msgid "hiperonimy:" |
2000 | 2007 | msgstr "hipernyms" |
2001 | 2008 | |
... | ... |
locale/en/LC_MESSAGES/djangojs.mo
No preview for this file type
locale/en/LC_MESSAGES/djangojs.po
... | ... | @@ -8,7 +8,7 @@ msgid "" |
8 | 8 | msgstr "" |
9 | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2021-01-19 13:57+0100\n" | |
11 | +"POT-Creation-Date: 2021-05-25 13:38+0200\n" | |
12 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
... | ... | @@ -18,200 +18,164 @@ msgstr "" |
18 | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
20 | 20 | |
21 | -#: entries/static/entries/js/entries.js:11 | |
22 | -#: entries/static/entries/js/entries2.js:307 | |
21 | +#: entries/static/entries/js/entries.js:14 | |
23 | 22 | msgid "Opinia" |
24 | 23 | msgstr "Opinion" |
25 | 24 | |
26 | -#: entries/static/entries/js/entries.js:41 | |
27 | -#: entries/static/entries/js/entries2.js:331 | |
25 | +#: entries/static/entries/js/entries.js:44 | |
28 | 26 | msgid "Funkcja" |
29 | 27 | msgstr "Function" |
30 | 28 | |
31 | -#: entries/static/entries/js/entries.js:44 | |
32 | -#: entries/static/entries/js/entries2.js:334 | |
29 | +#: entries/static/entries/js/entries.js:47 | |
33 | 30 | msgid "Typy fraz" |
34 | 31 | msgstr "Phrase types" |
35 | 32 | |
36 | -#: entries/static/entries/js/entries.js:104 | |
37 | -#: entries/static/entries/js/entries2.js:394 | |
33 | +#: entries/static/entries/js/entries.js:108 | |
38 | 34 | msgid "brak schematów" |
39 | 35 | msgstr "no schemata" |
40 | 36 | |
41 | -#: entries/static/entries/js/entries.js:128 | |
37 | +#: entries/static/entries/js/entries.js:132 | |
42 | 38 | msgid "nowa jednostka spoza <i>Słowosieci</i>" |
43 | 39 | msgstr "new lexical unit not in <i>plWordnet</i>" |
44 | 40 | |
45 | -#: entries/static/entries/js/entries.js:152 | |
46 | -#: entries/static/entries/js/entries2.js:412 | |
41 | +#: entries/static/entries/js/entries.js:156 | |
47 | 42 | msgid "Rola" |
48 | 43 | msgstr "Role" |
49 | 44 | |
50 | -#: entries/static/entries/js/entries.js:154 | |
51 | -#: entries/static/entries/js/entries2.js:414 | |
45 | +#: entries/static/entries/js/entries.js:158 | |
52 | 46 | msgid "Preferencje selekcyjne" |
53 | 47 | msgstr "Selectional preferences" |
54 | 48 | |
55 | -#: entries/static/entries/js/entries.js:201 | |
56 | -#: entries/static/entries/js/entries2.js:450 | |
49 | +#: entries/static/entries/js/entries.js:205 | |
57 | 50 | msgid "brak ram" |
58 | 51 | msgstr "no frames" |
59 | 52 | |
60 | -#: entries/static/entries/js/entries.js:218 | |
61 | -#: entries/static/entries/js/entries2.js:467 | |
53 | +#: entries/static/entries/js/entries.js:222 | |
62 | 54 | msgid "Kliknij, aby wyświetlić przykłady dla tego schematu." |
63 | 55 | msgstr "Click to show examples for this schema." |
64 | 56 | |
65 | -#: entries/static/entries/js/entries.js:281 | |
66 | -#: entries/static/entries/js/entries2.js:517 | |
67 | -msgid "" | |
68 | -"Kliknij, aby wyświetlić przykłady dla tej ramy oraz jej realizacje " | |
69 | -"składniowe." | |
70 | -msgstr "" | |
71 | -"Click to show examples linked to this frame and its syntactic realisations." | |
57 | +#: entries/static/entries/js/entries.js:259 | |
58 | +msgid "Kliknij, aby cofnąć wyświetlanie przykładów dla tego schematu." | |
59 | +msgstr "Click to undo showing examples for this schema." | |
72 | 60 | |
73 | -#: entries/static/entries/js/entries.js:384 | |
61 | +#: entries/static/entries/js/entries.js:271 | |
62 | +#: entries/static/entries/js/entries.js:460 | |
63 | +#: entries/static/entries/js/entries.js:492 | |
64 | +#: entries/static/entries/js/entries.js:538 | |
74 | 65 | msgid "" |
75 | -"Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z " | |
76 | -"tym znaczeniem." | |
77 | -msgstr "Click to undo restriction to examples linked to this meaning." | |
66 | +"Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z" | |
67 | +msgstr "Click to undo restriction to examples linked to" | |
78 | 68 | |
79 | -#: entries/static/entries/js/entries.js:386 | |
80 | -msgid "Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tym znaczeniem." | |
81 | -msgstr "Click to show only examples linked to this meaning." | |
69 | +#: entries/static/entries/js/entries.js:271 | |
70 | +#: entries/static/entries/js/entries.js:273 | |
71 | +msgid "tą pozycją" | |
72 | +msgstr "this position" | |
82 | 73 | |
83 | -#: entries/static/entries/js/entries.js:416 | |
84 | -#: entries/static/entries/js/entries2.js:578 | |
85 | -msgid "" | |
86 | -"Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z " | |
87 | -"tą rolą." | |
88 | -msgstr "Click to undo restriction to examples linked to this role." | |
89 | - | |
90 | -#: entries/static/entries/js/entries.js:418 | |
91 | -#: entries/static/entries/js/entries2.js:580 | |
92 | -msgid "Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tą rolą." | |
93 | -msgstr "Click to show only examples linked to this role." | |
74 | +#: entries/static/entries/js/entries.js:271 | |
75 | +#: entries/static/entries/js/entries.js:273 | |
76 | +msgid "tą frazą" | |
77 | +msgstr "this phrase" | |
94 | 78 | |
79 | +#: entries/static/entries/js/entries.js:273 | |
95 | 80 | #: entries/static/entries/js/entries.js:462 |
96 | -#: entries/static/entries/js/entries2.js:616 | |
81 | +#: entries/static/entries/js/entries.js:494 | |
82 | +#: entries/static/entries/js/entries.js:540 | |
83 | +msgid "Kliknij, aby wyświetlić wyłącznie przykłady powiązane z" | |
84 | +msgstr "Click to show only examples linked to" | |
85 | + | |
86 | +#: entries/static/entries/js/entries.js:357 | |
97 | 87 | msgid "" |
98 | -"Kliknij, aby cofnąć ograniczenie wyświetlanych przykładów do powiązanych z " | |
99 | -"tym schematem." | |
100 | -msgstr "Click to undo restriction to examples linked to this schema." | |
88 | +"Kliknij, aby wyświetlić przykłady dla tej ramy oraz jej realizacje " | |
89 | +"składniowe." | |
90 | +msgstr "" | |
91 | +"Click to show examples linked to this frame and its syntactic realisations." | |
101 | 92 | |
102 | -#: entries/static/entries/js/entries.js:464 | |
103 | -#: entries/static/entries/js/entries2.js:618 | |
104 | -msgid "Kliknij, aby wyświetlić wyłącznie przykłady powiązane z tym schematem." | |
105 | -msgstr "Click to show only examples linked to this schema." | |
93 | +#: entries/static/entries/js/entries.js:460 | |
94 | +#: entries/static/entries/js/entries.js:462 | |
95 | +msgid "tym znaczeniem" | |
96 | +msgstr "this meaning" | |
106 | 97 | |
107 | 98 | #: entries/static/entries/js/entries.js:492 |
108 | -#: entries/static/entries/js/entries2.js:647 | |
99 | +#: entries/static/entries/js/entries.js:494 | |
100 | +msgid "tą rolą" | |
101 | +msgstr "this role" | |
102 | + | |
103 | +#: entries/static/entries/js/entries.js:538 | |
104 | +#: entries/static/entries/js/entries.js:540 | |
105 | +msgid "tym schematem" | |
106 | +msgstr "this schema" | |
107 | + | |
108 | +#: entries/static/entries/js/entries.js:568 | |
109 | 109 | msgid "Kliknij, aby cofnąć wybór tej ramy." |
110 | 110 | msgstr "Click to undo choice if this frame." |
111 | 111 | |
112 | -#: entries/static/entries/js/entries.js:584 | |
113 | -#: entries/static/entries/js/entries.js:690 | |
114 | -#: entries/static/entries/js/entries2.js:725 | |
112 | +#: entries/static/entries/js/entries.js:671 | |
113 | +#: entries/static/entries/js/entries.js:777 | |
115 | 114 | msgid "Komentarz" |
116 | 115 | msgstr "Comment" |
117 | 116 | |
118 | -#: entries/static/entries/js/entries.js:601 | |
117 | +#: entries/static/entries/js/entries.js:688 | |
119 | 118 | msgid "" |
120 | 119 | "Kliknij, aby cofnąć wyświetlanie typów fraz powiązanych z tym przykładem." |
121 | 120 | msgstr "Click to undo showing phrase types linked to this example." |
122 | 121 | |
123 | -#: entries/static/entries/js/entries.js:603 | |
122 | +#: entries/static/entries/js/entries.js:690 | |
124 | 123 | msgid "Kliknij, aby wyświetlić typy fraz powiązane z tym przykładem." |
125 | 124 | msgstr "Click to show phrase types linked to this example." |
126 | 125 | |
127 | -#: entries/static/entries/js/entries.js:642 | |
126 | +#: entries/static/entries/js/entries.js:729 | |
128 | 127 | msgid "" |
129 | 128 | "Kliknij, aby cofnąć wyświetlanie argumentów i typów fraz powiązanych z tym " |
130 | 129 | "przykładem." |
131 | 130 | msgstr "" |
132 | 131 | "Click to undo showing arguments and phrase types linked to this example." |
133 | 132 | |
134 | -#: entries/static/entries/js/entries.js:644 | |
133 | +#: entries/static/entries/js/entries.js:731 | |
135 | 134 | msgid "" |
136 | 135 | "Kliknij, aby wyświetlić argumenty i typy fraz powiązane z tym przykładem." |
137 | 136 | msgstr "Click to show arguments and phrase types linked to this example." |
138 | 137 | |
139 | -#: entries/static/entries/js/entries.js:824 | |
138 | +#: entries/static/entries/js/entries.js:949 | |
140 | 139 | msgid "Przetwarzanie..." |
141 | 140 | msgstr "Processing" |
142 | 141 | |
143 | -#: entries/static/entries/js/entries.js:825 | |
144 | -#: entries/static/entries/js/entries.js:881 | |
142 | +#: entries/static/entries/js/entries.js:950 | |
143 | +#: entries/static/entries/js/entries.js:1006 | |
145 | 144 | msgid "Szukaj:" |
146 | 145 | msgstr "Search:" |
147 | 146 | |
148 | -#: entries/static/entries/js/entries.js:826 | |
147 | +#: entries/static/entries/js/entries.js:951 | |
149 | 148 | msgid "Liczba haseł: _TOTAL_" |
150 | 149 | msgstr "_TOTAL_ entries" |
151 | 150 | |
152 | -#: entries/static/entries/js/entries.js:827 | |
153 | -#: entries/static/entries/js/entries.js:882 | |
151 | +#: entries/static/entries/js/entries.js:952 | |
152 | +#: entries/static/entries/js/entries.js:1007 | |
154 | 153 | msgid "Liczba haseł: 0" |
155 | 154 | msgstr "0 entries" |
156 | 155 | |
157 | -#: entries/static/entries/js/entries.js:828 | |
156 | +#: entries/static/entries/js/entries.js:953 | |
158 | 157 | msgid "(spośród _MAX_)" |
159 | 158 | msgstr "(out of _MAX_)" |
160 | 159 | |
161 | -#: entries/static/entries/js/entries.js:829 | |
162 | -#: entries/static/entries/js/entries.js:883 | |
160 | +#: entries/static/entries/js/entries.js:954 | |
161 | +#: entries/static/entries/js/entries.js:1008 | |
163 | 162 | msgid "Brak haseł do wyświetlenia." |
164 | 163 | msgstr "No entries to display." |
165 | 164 | |
166 | -#: entries/static/entries/js/entries.js:831 | |
167 | -#: entries/static/entries/js/entries.js:885 | |
165 | +#: entries/static/entries/js/entries.js:956 | |
166 | +#: entries/static/entries/js/entries.js:1010 | |
168 | 167 | msgid ": sortuj kolumnę rosnąco" |
169 | 168 | msgstr ": sort column in ascending order" |
170 | 169 | |
171 | -#: entries/static/entries/js/entries.js:832 | |
172 | -#: entries/static/entries/js/entries.js:886 | |
170 | +#: entries/static/entries/js/entries.js:957 | |
171 | +#: entries/static/entries/js/entries.js:1011 | |
173 | 172 | msgid ": sortuj kolumnę malejąco" |
174 | 173 | msgstr ": sort column in descending order" |
175 | 174 | |
176 | -#: entries/static/entries/js/entries2.js:62 | |
177 | 175 | #: entries/static/entries/js/forms.js:7 |
178 | 176 | msgid "Formularz filtrowania zawiera błędy." |
179 | 177 | msgstr "The filtering form contains errors." |
180 | 178 | |
181 | -#: entries/static/entries/js/entries2.js:107 | |
182 | -#: entries/static/entries/js/forms.js:144 | |
183 | -msgid "zwiń" | |
184 | -msgstr "collapse" | |
185 | - | |
186 | -#: entries/static/entries/js/entries2.js:112 | |
187 | -#: entries/static/entries/js/forms.js:149 | |
188 | -msgid "rozwiń" | |
189 | -msgstr "expand" | |
190 | - | |
191 | -#: entries/static/entries/js/entries2.js:149 | |
192 | -#: entries/static/entries/js/forms.js:220 | |
193 | -msgid "LUB" | |
194 | -msgstr "OR" | |
195 | - | |
196 | -#: entries/static/entries/js/entries2.js:149 | |
197 | -#: entries/static/entries/js/forms.js:220 | |
198 | -msgid "Usuń" | |
199 | -msgstr "Remove" | |
200 | - | |
201 | -#: entries/static/entries/js/entries2.js:733 | |
202 | -msgid "" | |
203 | -"Kliknij, aby cofnąć wyświetlanie argumentów i fraz powiązanych z tym " | |
204 | -"przykładem." | |
205 | -msgstr "Click to undo showing arguments and phrases linked to this example." | |
206 | - | |
207 | -#: entries/static/entries/js/entries2.js:735 | |
208 | -msgid "Kliknij, aby wyświetlić argumenty i frazy powiązane z tym przykładem." | |
209 | -msgstr "Click to show arguments and phrases linked to this example." | |
210 | - | |
211 | -#: entries/static/entries/js/entries2.js:815 | |
212 | -msgid "brak haseł" | |
213 | -msgstr "no entries" | |
214 | - | |
215 | 179 | #: entries/static/entries/js/forms.js:48 entries/static/entries/js/forms.js:110 |
216 | 180 | msgid "nie" |
217 | 181 | msgstr "not" |
... | ... | @@ -224,6 +188,14 @@ msgstr "and" |
224 | 188 | msgid "lub" |
225 | 189 | msgstr "or" |
226 | 190 | |
191 | +#: entries/static/entries/js/forms.js:144 | |
192 | +msgid "zwiń" | |
193 | +msgstr "collapse" | |
194 | + | |
195 | +#: entries/static/entries/js/forms.js:149 | |
196 | +msgid "rozwiń" | |
197 | +msgstr "expand" | |
198 | + | |
227 | 199 | #: entries/static/entries/js/forms.js:162 |
228 | 200 | msgid "" |
229 | 201 | "Łączenie negacji elementu z operatorem ‹inny› na jednym poziomie formularza " |
... | ... | @@ -267,9 +239,17 @@ msgstr "" |
267 | 239 | "possible." |
268 | 240 | |
269 | 241 | #: entries/static/entries/js/forms.js:220 |
242 | +msgid "LUB" | |
243 | +msgstr "OR" | |
244 | + | |
245 | +#: entries/static/entries/js/forms.js:220 | |
270 | 246 | msgid "INNY" |
271 | 247 | msgstr "OTHER" |
272 | 248 | |
249 | +#: entries/static/entries/js/forms.js:220 | |
250 | +msgid "Usuń" | |
251 | +msgstr "Remove" | |
252 | + | |
273 | 253 | #: entries/static/entries/js/forms.js:231 |
274 | 254 | msgid "Wykonanie zapytania z operatorem ‹inny› może trwać zauważalnie dłużej." |
275 | 255 | msgstr "" |
... | ... |
meanings/management/commands/import_plWordnet.py
... | ... | @@ -102,7 +102,7 @@ def import_plWordnet(): |
102 | 102 | parser.parse(xml_path) |
103 | 103 | print("...DONE") |
104 | 104 | |
105 | - print("") | |
105 | + print() | |
106 | 106 | |
107 | 107 | print("Storing synsets...") |
108 | 108 | synsets = parser.getContentHandler()._synsets_to_base |
... | ... | @@ -116,7 +116,7 @@ def import_plWordnet(): |
116 | 116 | print(str(i*BULK) + "...") |
117 | 117 | print("...DONE") |
118 | 118 | |
119 | - print("") | |
119 | + print() | |
120 | 120 | |
121 | 121 | print("Storing lexical units...") |
122 | 122 | lexical_units = parser.getContentHandler()._lexical_units_to_base |
... | ... | @@ -130,7 +130,7 @@ def import_plWordnet(): |
130 | 130 | print(str(i*BULK) + "...") |
131 | 131 | print("...DONE") |
132 | 132 | |
133 | - print("") | |
133 | + print() | |
134 | 134 | |
135 | 135 | print("Storing hypernyms...") |
136 | 136 | hypernyms = parser.getContentHandler()._hypernymy_to_base |
... | ... | @@ -148,5 +148,4 @@ def import_plWordnet(): |
148 | 148 | print(i, child, parents) |
149 | 149 | child.hypernyms.add(*parents) |
150 | 150 | child.save() |
151 | - | |
152 | 151 | print("...DONE") |
... | ... |