Skip to content

Commit 6726c8a

Browse files
author
Olivier Dolbeau
authored
Merge pull request #371 from odolbeau/improve-profiler-view
Update Profiler view
2 parents 31c526c + c552a30 commit 6726c8a

File tree

1 file changed

+45
-108
lines changed

1 file changed

+45
-108
lines changed

Resources/views/SymfonyProfiler/translation.html.twig

Lines changed: 45 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -4,133 +4,72 @@
44
# Authors Tobias Nyholm, Damien Alexandre (damienalexandre), Damien Harper
55
#}
66

7-
{% import _self as translation_helper %}
7+
{% import _self as helper %}
88

9-
{% block panelContent %}
10-
<h2>Translation Metrics</h2>
9+
{% block panel %}
10+
<h2>PHP Translation</h2>
1111

1212
<div>
1313
<a class="btn" href="javascript:void(0);" onclick='syncAll()'>Synchronize all translations</a><br />
1414
<div id="top-result-area"></div>
1515
</div>
1616

17-
<div class="metrics">
18-
<div class="metric">
19-
<span class="value">{{ collector.countdefines }}</span>
20-
<span class="label">Defined messages</span>
21-
</div>
22-
23-
<div class="metric">
24-
<span class="value">{{ collector.countFallbacks }}</span>
25-
<span class="label">Fallback messages</span>
26-
</div>
27-
28-
<div class="metric">
29-
<span class="value">{{ collector.countMissings }}</span>
30-
<span class="label">Missing messages</span>
31-
</div>
32-
</div>
17+
{{ parent() }}
3318

34-
<h2>Translation Messages</h2>
35-
36-
{# sort translation messages in groups #}
37-
{% set messages_defined, messages_missing, messages_fallback = [], [], [] %}
38-
{% for key, message in collector.messages %}
39-
{% if message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_DEFINED') %}
40-
{% set messages_defined = messages_defined|merge({(key): message}) %}
41-
{% elseif message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_MISSING') %}
42-
{% set messages_missing = messages_missing|merge({(key): message}) %}
43-
{% elseif message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK') %}
44-
{% set messages_fallback = messages_fallback|merge({(key): message}) %}
45-
{% endif %}
46-
{% endfor %}
47-
48-
<form action="{{ path('php_translation_profiler_translation_create_assets', {'token': token}) }}" method="post"
49-
id="translations-list" onSubmit="return saveTranslations(this);" >
5019
<span class="hidden">
5120
<img src="{{ asset("bundles/translation/css/images/loader.svg") }}" width="60" id="svg-loader">
5221
</span>
5322

54-
<div class="sf-tabs">
55-
<div class="tab">
56-
<h3 class="tab-title">Defined <span class="badge">{{ messages_defined|length }}</span></h3>
57-
58-
<div class="tab-content">
59-
<p class="help">
60-
These messages are correctly translated into the given locale.
61-
</p>
62-
63-
{% if messages_defined is empty %}
64-
<div class="empty">
65-
<p>None of the used translation messages are defined for the given locale.</p>
66-
</div>
67-
{% else %}
68-
{{ translation_helper.render_table(messages_defined) }}
69-
{% endif %}
70-
</div>
71-
</div>
72-
73-
<div class="tab">
74-
<h3 class="tab-title">Fallback <span class="badge">{{ messages_fallback|length }}</span></h3>
75-
76-
<div class="tab-content">
77-
<p class="help">
78-
These messages are not available for the given locale
79-
but Symfony found them in the fallback locale catalog.
80-
</p>
81-
82-
{% if messages_fallback is empty %}
83-
<div class="empty">
84-
<p>No fallback translation messages were used.</p>
85-
</div>
86-
{% else %}
87-
{{ translation_helper.render_table(messages_fallback) }}
88-
{% endif %}
89-
</div>
90-
</div>
91-
92-
<div class="tab">
93-
<h3 class="tab-title">Missing <span class="badge">{{ messages_missing|length }}</span></h3>
94-
95-
<div class="tab-content">
96-
<p class="help">
97-
These messages are not available for the given locale and cannot
98-
be found in the fallback locales. Add them to the translation
99-
catalogue to avoid Symfony outputting untranslated contents.
100-
</p>
101-
102-
{% if messages_missing is empty %}
103-
<div class="empty">
104-
<p>There are no messages of this category.</p>
105-
</div>
106-
{% else %}
107-
{{ translation_helper.render_table(messages_missing, true) }}
108-
{% endif %}
109-
</div>
110-
</div>
111-
</div>
23+
{% include "@Translation/SymfonyProfiler/javascripts.html.twig" %}
24+
{% endblock %}
11225

113-
<p class="full-width" id="translationResult"></p>
26+
{% block defined_messages %}
27+
{% set messages = [] %}
28+
{% for key, message in collector.messages|filter(message => message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_DEFINED')) %}
29+
{% set messages = messages|merge({(key): message}) %}
30+
{% endfor %}
11431

115-
<button type="submit" class="btn">
116-
Add selected messages
117-
</button>
32+
{{ helper.render_table(messages) }}
33+
{% endblock %}
11834

119-
</form>
120-
{% include "@Translation/SymfonyProfiler/javascripts.html.twig" %}
35+
{% block fallback_messages %}
36+
{% set messages = [] %}
37+
{% for key, message in collector.messages|filter(message => message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK')) %}
38+
{% set messages = messages|merge({(key): message}) %}
39+
{% endfor %}
40+
41+
{{ helper.render_table(messages) }}
12142
{% endblock %}
12243

123-
{% block panel %}
124-
{{ block('panelContent') }}
44+
{% block missing_messages %}
45+
{% set messages = [] %}
46+
{% for key, message in collector.messages|filter(message => message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_MISSING')) %}
47+
{% set messages = messages|merge({(key): message}) %}
48+
{% endfor %}
49+
50+
<form action="{{ path('php_translation_profiler_translation_create_assets', {'token': token}) }}" method="post"
51+
id="translations-list" onSubmit="return saveTranslations(this);" >
52+
53+
{{ helper.render_table(messages, true) }}
54+
55+
<p class="full-width" id="translationResult"></p>
56+
57+
<button type="submit" class="btn">
58+
Add selected messages
59+
</button>
60+
61+
</form>
12562
{% endblock %}
12663

127-
{% macro render_table(messages, checkedByDefault = false) %}
64+
{% macro render_table(messages, withCheckbox = false) %}
12865
<table>
12966
<thead>
13067
<tr>
131-
<th>
132-
<input type="checkbox" id="check-all-control" onchange="toggleCheckAll(this)" {% if checkedByDefault %}checked="checked"{% endif %}>
133-
</th>
68+
{% if withCheckbox %}
69+
<th>
70+
<input type="checkbox" id="check-all-control" onchange="toggleCheckAll(this)" checked="checked">
71+
</th>
72+
{% endif %}
13473
<th>Locale</th>
13574
<th>Domain</th>
13675
<th>Times used</th>
@@ -143,10 +82,8 @@
14382
{% for key, message in messages %}
14483
<tr id="{{ key }}">
14584
<td>
146-
{% if message.state == constant('Symfony\\Component\\Translation\\DataCollectorTranslator::MESSAGE_MISSING') %}
85+
{% if withCheckbox %}
14786
<input type="checkbox" name="translationKey" value="{{ key }}" checked="checked" class="translation-key-checkbox">
148-
{% else %}
149-
<input type="checkbox" disabled="disabled">
15087
{% endif %}
15188
</td>
15289
<td class="font-normal text-small">{{ message.locale }}</td>

0 commit comments

Comments
 (0)