56 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| {% extends 'base.html' %} 
 | |
| {% load i18n %}
 | |
| {% load markdown_deux_tags %}
 | |
| {% block head_title %}{% trans "Find a sentence" %}{% endblock %}
 | |
| {% block title %}{% trans "Find a sentence" %}{% endblock %}
 | |
| {% block content %}
 | |
| <script src='https://code.responsivevoice.org/responsivevoice.js'></script>
 | |
| <section aria-label="{% trans "Search" %}">
 | |
| <form method="GET">
 | |
|         {{ search_form.as_p }}
 | |
|     <button>{% trans "Search" %}</button>
 | |
| </form>
 | |
| </section>
 | |
| {% if posts %}
 | |
| <h2>{% trans "Showing results" %}</h2>
 | |
|         <script type="text/javascript">
 | |
|             responsiveVoice.setDefaultVoice("{{lang}} Female");
 | |
|     </script>
 | |
| <ul>
 | |
| {% for post in posts %}
 | |
| <li><a href="javascript:void(0);" onclick="responsiveVoice.speak('{{ post.phrase|addslashes }}')">{{ post.phrase }}</a></li>
 | |
|         {% endfor %}
 | |
| </ul>
 | |
| <div class="pagination">
 | |
|     <span class="step-links">
 | |
|         {% if posts.has_previous %}
 | |
|             <a href="?page=1{{ extra_params }}">{% trans "« first" %}</a>
 | |
|             <a href="?page={{ posts.previous_page_number }}{{ extra_params }}">{% trans "previous" %}</a>
 | |
|         {% endif %}
 | |
|         <span class="current">
 | |
|  Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
 | |
|         </span>
 | |
|         {% if posts.has_next %}
 | |
|             <a href="?page={{ posts.next_page_number }}{{ extra_params }}">{% trans "next" %}</a>
 | |
|             <a href="?page={{ posts.paginator.num_pages }}{{ extra_params }}">{% trans "last »" %}</a>
 | |
|         {% endif %}
 | |
|     </span>
 | |
| </div>
 | |
| {% else %}
 | |
| <h2>How it works?</h2>
 | |
| 
 | |
| <p>This simple Django application has been created to help me studying russian sentences and later has been extended to add multiple languages. It works by querying a database wich already contains the complete list of sentences found in the <a href="https://tatoeba.org/">Tatoeba project </a> for the supported languages. Right now, the database contains {{total}} sentences, so things may go slow from time to time once a search has been started. Every page will contain a maximum of 100 sentences, and you can go to the next, previous, first or last page, if there are more than 100 results.</p>
 | |
| 
 | |
| <p>Additionally, you can click in any sentence to hear how it should be spoken.</p>
 | |
| 
 | |
| <h2>Caveats</h2>
 | |
| 
 | |
| <ul><li>Searches are made with "like"statements in the DJango ORM. It means that they are not exact and searching a word may find other similar ones (for example, searching читаю may return sentences including similar words like прочитаю, считаю, читают; searching testing may include results like protesting, etc).</li>
 | |
| <li>Text to speech is made with the Google Text to Speech engine and should work in All HTML 5 compatible browsers (Firefox and Chrome in windows have been tested, and Chrome in Android).</li></ul>
 | |
| 
 | |
| <h2>Resources</h2>
 | |
| 
 | |
| <p>For this application, I have used the <a href="https://tatoeba.org"/>Tatoeba project</a> for extracting all phrases from their <a href="https://tatoeba.org/downloads">CSV sentence files,</a> and the <a href="https://responsivevoice.org/">responsive voice library</a> for generating a cross platform text to speech result.</p>
 | |
| {% endif %}
 | |
| {% endblock %}
 |