From 971ef477e51336deeacd863bf833020cddc7ef82 Mon Sep 17 00:00:00 2001 From: Jyri-Petteri Paloposki Date: Mon, 11 Jan 2021 00:15:44 +0200 Subject: [PATCH] Make a few more targets translatable. Tracks should now be pretty close to fully translatable. --- app/controllers/data_controller.rb | 28 ++--- app/views/data/csv_map.html.erb | 4 +- app/views/data/import.html.erb | 8 +- app/views/data/index.de.html.erb | 36 ------ app/views/data/index.en.html.erb | 36 ------ app/views/data/index.es.html.erb | 36 ------ app/views/data/index.html.erb | 36 ++++++ app/views/data/yaml_form.de.html.erb | 17 --- app/views/data/yaml_form.en.html.erb | 17 --- app/views/data/yaml_form.html.erb | 14 +++ app/views/data/yaml_import.html.erb | 4 +- app/views/integrations/index.de.html.erb | 51 -------- app/views/integrations/index.en.html.erb | 119 ------------------ app/views/integrations/index.html.erb | 85 +++++++++++++ app/views/integrations/index.nl.html.erb | 52 -------- app/views/preferences/_date_and_time.html.erb | 8 +- config/locales/de.yml | 101 ++++++++++++++- config/locales/en.yml | 107 +++++++++++++++- config/locales/es.yml | 44 ++++++- config/locales/fi.yml | 1 + config/locales/nl.yml | 56 +++++++++ 21 files changed, 457 insertions(+), 403 deletions(-) delete mode 100644 app/views/data/index.de.html.erb delete mode 100644 app/views/data/index.en.html.erb delete mode 100644 app/views/data/index.es.html.erb create mode 100644 app/views/data/index.html.erb delete mode 100644 app/views/data/yaml_form.de.html.erb delete mode 100644 app/views/data/yaml_form.en.html.erb create mode 100644 app/views/data/yaml_form.html.erb delete mode 100644 app/views/integrations/index.de.html.erb delete mode 100644 app/views/integrations/index.en.html.erb create mode 100644 app/views/integrations/index.html.erb delete mode 100644 app/views/integrations/index.nl.html.erb diff --git a/app/controllers/data_controller.rb b/app/controllers/data_controller.rb index 16ed4fcc..e9893f16 100644 --- a/app/controllers/data_controller.rb +++ b/app/controllers/data_controller.rb @@ -2,15 +2,15 @@ class DataController < ApplicationController require 'csv' def index - @page_title = "TRACKS::Export" + @page_title = t('data.export.page_title') end def import; end def csv_map if params[:file].blank? - flash[:notice] = "File can't be blank" - redirect_to :back + flash[:notice] = t "data.import.errors.file_blank" + redirect_back fallback_location: root_path else @import_to = params[:import_to] @@ -20,8 +20,8 @@ class DataController < ApplicationController @headers = import_headers(params[:file].path).collect { |v| [v, i += 1] } @headers.unshift ['', i] rescue Exception => e - flash[:error] = "Invalid CVS: could not read headers: #{e}" - redirect_to :back + flash[:error] = t "data.import.errors.invalid_csv", e: e + redirect_back fallback_location: root_path return end @@ -32,8 +32,8 @@ class DataController < ApplicationController path_and_file = Rails.root.join('public', 'uploads', 'csv', @filename) File.open(path_and_file, "wb") { |f| f.write(uploaded_file.read) } rescue Exception => e - flash[:error] = "Could not save uploaded CSV (#{path_and_file}). Can Tracks write to the upload directory? #{e}" - redirect_to :back + flash[:error] = t "data.import.errors.save_error", path_and_file: path_and_file, e: e + redirect_back fallback_location: root_path return end @@ -43,8 +43,8 @@ class DataController < ApplicationController when 'todos' @labels = [:description, :context, :project, :notes, :created_at, :due, :completed_at] else - flash[:error] = "Invalid import destination" - redirect_to :back + flash[:error] = t "data.import.errors.invalid_destination" + redirect_back fallback_location: root_path end respond_to do |format| format.html @@ -59,15 +59,15 @@ class DataController < ApplicationController case params[:import_to] when 'projects' count = Project.import path_and_file, params, current_user - flash[:notice] = "#{count} Projects imported" + flash[:notice] = t 'data.import.projects_count', count: count when 'todos' count = Todo.import path_and_file, params, current_user - flash[:notice] = "#{count} Todos imported" + flash[:notice] = t 'data.import.todos.count', count: count else - flash[:error] = t('data.invalid_import_destination') + flash[:error] = t('data.import.errors.invalid_destination') end rescue Exception => e - flash[:error] = t('data.invalid_import_destination') + ": #{e}" + flash[:error] = t 'data.import.invalid_destination', e: e end File.delete(path_and_file) redirect_to import_data_path @@ -203,7 +203,7 @@ class DataController < ApplicationController end def yaml_import - raise "YAML loading is disabled" + raise t "data.import.yaml_disabled" end private diff --git a/app/views/data/csv_map.html.erb b/app/views/data/csv_map.html.erb index 42ecefe1..8f6104d4 100644 --- a/app/views/data/csv_map.html.erb +++ b/app/views/data/csv_map.html.erb @@ -1,4 +1,4 @@ -

Map fields to be imported

+

<%= I18n.t 'data.import.map_title' %>

<%= form_tag csv_import_data_path do %> <% @labels.each do |l| %> <%= label_tag l %>: @@ -7,5 +7,5 @@ <% end %> <%= hidden_field_tag :file, @filename %> <%= hidden_field_tag :import_to, @import_to %> - <%= submit_tag "Import" %> + <%= submit_tag I18n.t("data.import.submit") %> <% end %> diff --git a/app/views/data/import.html.erb b/app/views/data/import.html.erb index e9592a52..8f2fbf5d 100644 --- a/app/views/data/import.html.erb +++ b/app/views/data/import.html.erb @@ -1,15 +1,15 @@
-

Importing data

+

<%= I18n.t "data.import.header" %>

-

Please upload your CSV file

+

<%= I18n.t "data.import.upload_csv" %>

<%= form_tag csv_map_data_path, :id => 'upload_form', multipart: true do %> - + <%= select_tag(:import_to, options_for_select([['Projects', 'projects'], ['Todos', 'todos']], 1) ) %>

<%= file_field_tag :file %> - <%= submit_tag "Upload", :id => "upload_form_submit" %> + <%= submit_tag I18n.t("data.import.upload"), :id => "upload_form_submit" %> <% end %>
diff --git a/app/views/data/index.de.html.erb b/app/views/data/index.de.html.erb deleted file mode 100644 index fa2140ee..00000000 --- a/app/views/data/index.de.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -
-
-
-

Daten exportieren

-

Sie können zwischen den folgenden Formaten wählen:

-
    -
  • YAML: Für den Daten-Import bevorzugt.
    Bitte beachten Sie, dass der YAML-Import zur Zeit noch experimentelle Funktionalität darstellt. Nutzen Sie diese Option also nicht. um kritische Daten zu sichern.
  • -
  • CSV: Am besten für den Export in eine Tabellen-Kalkulation oder ähnliche Auswertungs-Software geeignet
  • -
  • XML: Am besten für den Daten-Import oder automatische Weiterverarbeitung
  • -
-
-

- - - - - - - - - - - - - - - - - - - - - -
BeschreibungDownload link
YAML-Datei mit all Ihren Aktionen, Umgebungen, Projekten, Tags und Notizen<%= link_to "YAML Datei", :controller => 'data', :action => 'yaml_export' %>
CSV-Datei mit all Ihren Aktionen, benannten Umgebungen und Projekten<%= link_to "CSV Dile (Aktionen, Umgebungen und Projekte)", :controller => 'data', :action => 'csv_actions' %>
CSV-Datei mit all Ihren Notizen<%= link_to "CSV Datei (nur Notizen)", :controller => 'data', :action => 'csv_notes' %>
XML-Datei mit all Ihren Aktionen, Umgebungen, Projekten, Tags und Notizen<%= link_to "XML file (actions only)", :controller => 'data', :action => 'xml_export' %>
-
-
diff --git a/app/views/data/index.en.html.erb b/app/views/data/index.en.html.erb deleted file mode 100644 index 59052c3f..00000000 --- a/app/views/data/index.en.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -
-
-
-

Exporting data

-

You can choose between the following formats:

-
    -
  • YAML: Best for exporting data.
    Please note that importing YAML files is currently supported only in experimentally. Do not rely on it for backing up critical data.
  • -
  • CSV: Best for importing into spreadsheet or data analysis software
  • -
  • XML: Best for importing or repurposing the data
  • -
-
-

- - - - - - - - - - - - - - - - - - - - - -
DescriptionDownload link
YAML file containing all your actions, contexts, projects, tags and notes<%= link_to "YAML file", data_yaml_export_path %>
CSV file containing all of your actions, with named contexts and projects<%= link_to "CSV file (actions, contexts and projects)", data_csv_actions_path %>
CSV file containing all your notes<%= link_to "CSV file (notes only)", data_csv_notes_path %>
XML file containing all your actions, contexts, projects, tags and notes<%= link_to "XML file (actions only)", data_xml_export_path %>
-
-
diff --git a/app/views/data/index.es.html.erb b/app/views/data/index.es.html.erb deleted file mode 100644 index 84455349..00000000 --- a/app/views/data/index.es.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -
-
-
-

Exportar datos

-

Puede escoger entre los siguientes formatos:

-
    -
  • YAML: Mejor formato para exportar datos.
    Por favor tenga en cuenta que la importación de ficheros YAML actualmente esta soportada de forma experimental. No confíe en este formato para hacer copias de seguridad de datos importantes.
  • -
  • CSV: Mejor formato para importar en una hoja de cálculo o en programas de análisis de datos.
  • -
  • XML: Mejor formato para transformar los datos a otro formato
  • -
-
-

- - - - - - - - - - - - - - - - - - - - - -
DescripciónEnlace de descarga
Fichero YAML con todas sus acciones, contextos, proyectos, etiquetas y notas<%= link_to "Fichero YAML", data_yaml_export_path %>
Fichero CSV con todas sus acciones, con contextos por nombre y proyectos<%= link_to "Fichero CSV (acciones, contextos y proyectos)", data_csv_actions_path %>
Fichero CSV con todas sus notas<%= link_to "Fichero CSV (sólo notas)", data_csv_notes_path %>
Fichero XML con todas sus acciones, contextos, proyectos, etiquetas y notas<%= link_to "Fichero XML", data_xml_export_path %>
-
-
diff --git a/app/views/data/index.html.erb b/app/views/data/index.html.erb new file mode 100644 index 00000000..879e3bb8 --- /dev/null +++ b/app/views/data/index.html.erb @@ -0,0 +1,36 @@ +
+
+
+

<%= I18n.t "data.export.title" %>

+

<%= I18n.t "data.export.format_header" %>

+
    +
  • <%= raw I18n.t "data.export.yaml_description", yaml: "" + I18n.t("data.yaml") + "" %>
    <%= I18n.t "data.export.yaml_experimental" %>
  • +
  • <%= raw I18n.t "data.export.csv_description", csv: "" + I18n.t("data.csv") + "" %>
  • +
  • <%= raw I18n.t "data.export.xml_description", xml: "" + I18n.t("data.xml") + "" %>
  • +
+
+

+ + + + + + + + + + + + + + + + + + + + + +
<%= I18n.t "common.description" %><%= I18n.t "data.export.download_link" %>
<%= I18n.t "data.export.yaml_link_description" %><%= link_to I18n.t("data.export.yaml_link_title"), data_yaml_export_path %>
<%= I18n.t "data.export.csv_actions_description" %><%= link_to I18n.t("data.export.csv_actions_title"), data_csv_actions_path %>
<%= I18n.t "data.export.csv_notes_description" %><%= link_to I18n.t("data.export.csv_notes_title"), data_csv_notes_path %>
<%= I18n.t "data.export.xml_link_description" %><%= link_to I18n.t('data.export.xml_link_title'), data_xml_export_path %>
+
+
diff --git a/app/views/data/yaml_form.de.html.erb b/app/views/data/yaml_form.de.html.erb deleted file mode 100644 index a1827241..00000000 --- a/app/views/data/yaml_form.de.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -
-
-
-

Vorsicht: vor dem Import der YAML Datei werden alle Daten in Ihrer Datenbank gelöscht. - Falls Sie entsprechenden Zugriff auf Ihre Datenbank haben, empfiehlt es sich, ein Backup anzulegen, - bevor Sie fortfahren. -

-

Fügen Sie den Inhalt der kopierten YAML Datei in das untenstehende Formular ein:

-
-

- <%= form_for :import, @import, :url => {:controller => 'data', :action => 'yaml_import'} do |f| %> - <%= f.text_area :yaml %>
- - <% end %> -

-
-
diff --git a/app/views/data/yaml_form.en.html.erb b/app/views/data/yaml_form.en.html.erb deleted file mode 100644 index c7f04165..00000000 --- a/app/views/data/yaml_form.en.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -
-
-
-

Beware: all your current data will be destroyed before importing - the YAML file, so if you have access to the database, we strongly recommend - backing up the database right now in case that anything goes wrong. -

-

Paste the contents of the YAML file you exported into the text box below:

-
-

- <%= form_for :import, @import, :url => {:controller => 'data', :action => 'yaml_import'} do |f| %> - <%= f.text_area :yaml %>
- - <% end %> -

-
-
diff --git a/app/views/data/yaml_form.html.erb b/app/views/data/yaml_form.html.erb new file mode 100644 index 00000000..62e43fc0 --- /dev/null +++ b/app/views/data/yaml_form.html.erb @@ -0,0 +1,14 @@ +
+
+
+

<%= raw I18n.t "data.import.yaml_warning", warning: '' + I18n.t('data.import.warning') + '' %>

+

<%= I18n.t "data.import.paste_field" %>

+
+

+ <%= form_for :import, @import, :url => {:controller => 'data', :action => 'yaml_import'} do |f| %> + <%= f.text_area :yaml %>
+ + <% end %> +

+
+
diff --git a/app/views/data/yaml_import.html.erb b/app/views/data/yaml_import.html.erb index fff0144e..15a77c95 100644 --- a/app/views/data/yaml_import.html.erb +++ b/app/views/data/yaml_import.html.erb @@ -1,5 +1,5 @@ <% if !(@errmessage == '') %> -

<%= t('data.import_errors') %>:

<%= @errmessage %>

+

<%= t('data.import.errors.some') %>:

<%= @errmessage %>

<% else %> -

<%= t('data.import_successful') %>

+

<%= t('data.import.successful') %>

<% end %> diff --git a/app/views/integrations/index.de.html.erb b/app/views/integrations/index.de.html.erb deleted file mode 100644 index 1255e8a5..00000000 --- a/app/views/integrations/index.de.html.erb +++ /dev/null @@ -1,51 +0,0 @@ -<% has_contexts = !current_user.contexts.empty? -%> -

Integration

-

Tracks kann mit verschiedenen Werkzeugen zusammenarbeiten... - was immer Sie brauchen, um Ihre Aufgaben zu erledigen! - Auf dieser Seite finden Sie Informationen, um einige dieser Werkzeuge einzurichten. - Diese Beispiele sind nicht unbedingt auf Ihre Umgebung anwendbar oder bedürfen mehr - technisches Wissen als andere. - Weitere Informationen finden Sie in der <%= link_to "Entwickler Documentation der Tracks' REST API", url_for(:action => 'rest_api') %> (englisch).

-

Inhalt:

-
-

Sie haben weitere Beispiele? - Berichten Sie uns - in unserem Tipps&Tricks Forum, damit wir es für die nächsten Versionen berücksichtigen können. -

- - -

Automatically Email Yourself Upcoming Actions

- -

If you enter the following entry to your crontab, you will receive email every day around 5 AM with a list of the upcoming actions which are due within the next 7 days.

- - - -

You can of course use other text <%= link_to 'feeds provided by Tracks', feeds_path %> -- why not email a list of next actions in a particular project to a group of colleagues who are working on the project?

- - -

Integrated email/SMS receiver

-

- If Tracks is running on the same server as your mail server, you can use the integrated mail handler built into tracks. Steps to set it up: -

-
    -
  • Go to <%= link_to t('layouts.navigation.preferences'), preferences_url %> and - set your "<%= Preference.human_attribute_name('sms_email') %>" and - "<%= Preference.human_attribute_name('sms_context') %>" for todos sent in - via email (which could come from an SMS message)
  • -
  • In sendmail/qmail/postfix/whatever, set up an email address - alias to pipe messages to
    /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
  • -
  • Send an email to your newly configured address!
  • -
-

You can also use the Rich Todo API to send in tasks like "do laundry @ Home" - or "Call Bill > project X". The subject of the message will fill description, - context, and project, while the body will populate the tasks's note. -

-

- You may need to configure your site.yml to tell the message gateway to look at the to: field or from: field to - lookup Tracks' user from the email address in that field.

-

You can also send all email to a specific Tracks user. Configure mail_dispatch in site.yml to single_user and pass the login of the user: -

TRACKS_MAIL_RECEIVER=<%=current_user.login%> /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
-

diff --git a/app/views/integrations/index.en.html.erb b/app/views/integrations/index.en.html.erb deleted file mode 100644 index b61350cf..00000000 --- a/app/views/integrations/index.en.html.erb +++ /dev/null @@ -1,119 +0,0 @@ -<% has_contexts = !current_user.contexts.empty? -%> -

Integrations

-

Tracks can be integrated with a number of other tools... - whatever it takes to help you get things done! - This page has information on setting up some of these. - Not all of these are applicable to all platforms, and some require more - technical knowledge than others. - See also <%= link_to "developer documentation for Tracks' REST API", url_for(:action => 'rest_api') %>.

-

Contents:

-
-

Do you have one of your own to add? - Tell us about - it in our Tips and Tricks forum and we may include it on this page in a future versions of Tracks. -

- - -

Automatically Email Yourself Upcoming Actions

- -

If you enter the following entry to your crontab, you will receive email every day around 5 AM with a list of the upcoming actions which are due within the next 7 days.

- - - -

You can of course use other text <%= link_to 'feeds provided by Tracks', feeds_path %> -- why not email a list of next actions in a particular project to a group of colleagues who are working on the project?

- - -

Integrated email/SMS receiver

-

- If Tracks is running on the same server as your mail server, you can use the integrated mail handler built into tracks. Steps to set it up: -

-
    -
  • Go to <%= link_to t('layouts.navigation.preferences'), preferences_url %> and - set your "<%= Preference.human_attribute_name('sms_email') %>" and - "<%= Preference.human_attribute_name('sms_context') %>" for todos sent in - via email (which could come from an SMS message)
  • -
  • In sendmail/qmail/postfix/whatever, set up an email address - alias to pipe messages to
    /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
  • -
  • Send an email to your newly configured address!
  • -
-

You can also use the Rich Todo API to send in tasks like "do laundry @ Home" - or "Call Bill > project X". The subject of the message will fill description, - context, and project, while the body will populate the tasks's note. -

-

- You may need to configure your site.yml to tell the message gateway to look at the to: field or from: field to - lookup Tracks' user from the email address in that field.

-

You can also send all email to a specific Tracks user. Configure mail_dispatch in site.yml to single_user and pass the login of the user: -

TRACKS_MAIL_RECEIVER=<%=current_user.login%> /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
-

- - -

Send emails to Tracks with Mailgun

-

-If you want to email tasks to Tracks, but cannot run a mailserver on the same host, -you could use the Mailgun support built in to Tracks. -

-

-For this to work your Tracks server will need to be reachable from the internet, so -that Mailgun can POST data to it. -

-

    -
  • Go to <%= link_to 'http://mailgun.com' %> and register for a free account.
  • -
  • Go to 'Routes' in the Mailgun control panel, and add a new route:
  • -
      -
    • 'Filter expression' should be set to 'catch_all()'
    • -
    • 'Action' should be 'forward("http://mytracksserver.domain.com/mailgun/mime")' -
    -
  • Go to <%= link_to t('layouts.navigation.preferences'), preferences_url %> and - enter your incoming Mailgun email address (e.g. tracks@user.mailgun.com) in the - "<%= Preference.human_attribute_name('sms_email') %>" box.
  • -
  • Select a default context for emails to be put in with - "<%= Preference.human_attribute_name('sms_context') %>"
  • -
  • Add your Mailgun API key (not the Public API key) to the Tracks 'site.yml' -
  • Update the mailmap in 'site.yml' to define which senders can send emails to - which incoming addresses. For example, to send emails from your work and home - email accounts to your tracks Mailgun route, set it up like this: -
    -mailmap:
    -  tracks@user.mailgun.org:
    -  - me@myhome.domain.net
    -  - mr.user@work.company.com
    -
    -
-

All the comments about the email format from the section above apply to the -Mailgun handling, as the data is processed the same way

- - -

Rich Todo Message Format

-

For both of the above methods, the follow format can be used:

-
my awesome todo @context ~project <131012 >131009 #tag1 #tag2 *
-

The fields are:

- - - - - - - - - - - - - - - - - - - - - - -
SymbolMeaning
@The context to place the Todo in
~The project to place the Todo in
<The due date for the Todo (may be 2 digits for day, 4 digits for month-day, or 6 digits for year-month-day)
>The due date for the Todo (may be 2 digits for day, 4 digits for month-day, or 6 digits for year-month-day)
#A tag to apply to the Todo - may be used multiple times
*Flag to star the Todo
-

All symbols are optional, and text up to the first symbol (or end of string) is used as the description of the todo

diff --git a/app/views/integrations/index.html.erb b/app/views/integrations/index.html.erb new file mode 100644 index 00000000..d619d323 --- /dev/null +++ b/app/views/integrations/index.html.erb @@ -0,0 +1,85 @@ +<% has_contexts = !current_user.contexts.empty? -%> +

<%= I18n.t 'integrations.title' %>

+

<%= raw I18n.t 'integrations.intro', documentation_link: link_to(I18n.t('integrations.developer_documentation_link'), url_for(:action => 'rest_api')) %>

+

<%= I18n.t 'integrations.contents_header' %>

+ +

<%= raw I18n.t 'integrations.add_your_own', tell_us_link: link_to(I18n.t('integrations.tell_us_link_text'), 'https://github.com/TracksApp/tracks/issues') %>

+ + +

<%= I18n.t 'integrations.sections.automatic_email' %>

+ +

<%= I18n.t 'integrations.cron_1' %>

+ + + +

<%= raw I18n.t 'integrations.cron_2', feeds_link: link_to(I18n.t('integrations.feeds_link_text'), feeds_path) %>

+ + +

<%= I18n.t 'integrations.sections.message_gateway' %>

+

<%= I18n.t 'integrations.message_gateway.description' %>

+
    +
  • <%= raw I18n.t 'integrations.message_gateway.instructions.1', preferences_link: link_to(t('layouts.navigation.preferences'), preferences_url), sms_email_name: Preference.human_attribute_name('sms_email'), sms_context_name: Preference.human_attribute_name('sms_context') %>
  • +
  • <%= raw I18n.t 'integrations.message_gateway.instructions.2', command: "
    /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
    " %>
  • +
  • <%= I18n.t 'integrations.message_gateway.instructions.3' %>
  • +
+

<%= I18n.t 'integrations.message_gateway.rich_api_tip' %>

+

<%= raw I18n.t 'integrations.message_gateway.configuration', site_yml: 'site.yml', to_name: 'to:', from_name: 'from:' %>

+

<%= raw I18n.t 'integrations.message_gateway.one_user_configuration', single_user_var_name: 'single_user', code: "

TRACKS_MAIL_RECEIVER=" + current_user.login + " /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
" %>

+ + +

<%= I18n.t 'integrations.sections.mailgun' %>

+

<%= raw I18n.t 'integrations.mailgun.description', mailgun_link: link_to('Mailgun', 'http://www.mailgun.com/') %>

+

<%= I18n.t 'integrations.mailgun.conditions' %>

+
    +
  • <%= raw I18n.t 'integrations.mailgun.instructions.1', mailgun_link: link_to('Mailgun', 'http://www.mailgun.com/') %>
  • +
  • <%= I18n.t 'integrations.mailgun.instructions.2' %>
  • +
      +
    • <%= I18n.t 'integrations.mailgun.instructions.2a' %>
    • +
    • <%= I18n.t 'integrations.mailgun.instructions.2b' %>
    • +
    +
  • <%= raw I18n.t 'integrations.mailgun.instructions.3', preferences_link: link_to(t('layouts.navigation.preferences'), preferences_url), sms_email_name: Preference.human_attribute_name('sms_email') %>
  • +
  • <%= I18n.t 'integrations.mailgun.instructions.4', sms_context_name: Preference.human_attribute_name('sms_context') %>
  • +
  • <%= I18n.t 'integrations.mailgun.instructions.5' %>
  • +
  • <%= I18n.t 'integrations.mailgun.instructions.6', code: '
    +mailmap:
    +  tracks@user.mailgun.org:
    +  - me@myhome.domain.net
    +  - mr.user@work.company.com
    +
    ' %>
  • +
+

<%= I18n.t 'integrations.mailgun.gateway_instructions' %>

+ + +

<%= I18n.t 'integrations.sections.email_rich' %>

+

<%= I18n.t 'integrations.email_rich.description' %>

+
<%= I18n.t 'integrations.example_names.todo' %> @<%= I18n.t 'integrations.example_names.context' %> ~<%= I18n.t 'integrations.example_names.project' %> <131012 >131009 #<%= I18n.t 'integrations.example_names.tag.1' %> #<%= I18n.t 'integrations.example_names.tag.2' %> *
+

<%= I18n.t 'integrations.email_rich.fields_title' %>

+ + + + + + + + + + + + + + + + + + + + + + +
<%= I18n.t 'integrations.email_rich.symbol_title' %><%= I18n.t 'integrations.email_rich.meaning_title' %>
@<%= I18n.t 'integrations.email_rich.field_descriptions.context' %>
~<%= I18n.t 'integrations.email_rich.field_descriptions.project' %>
<<%= I18n.t 'integrations.email_rich.field_descriptions.due_date' %>
><%= I18n.t 'integrations.email_rich.field_descriptions.due_date' %>
#<%= I18n.t 'integrations.email_rich.field_descriptions.tag' %>
*<%= I18n.t 'integrations.email_rich.field_descriptions.star' %>
+

<%= I18n.t 'integrations.email_rich.fields_instruction' %> diff --git a/app/views/integrations/index.nl.html.erb b/app/views/integrations/index.nl.html.erb deleted file mode 100644 index dfacaecb..00000000 --- a/app/views/integrations/index.nl.html.erb +++ /dev/null @@ -1,52 +0,0 @@ -<% has_contexts = !current_user.contexts.empty? -%> -

Integratie

-

Tracks kan met een aantal tools worden geïntegreerd... - Alles om je te helpen om dingen gedaan te krijgen! - Deze pagina heeft informatie over het tot stand brengen van sommige integratievormen. - Deze voorbeelden zijn niet altijd voor alle platformen van toepassing en - sommige voorbeelden vragen meer technische kennis dan anderen - Zie ook <%= link_to "de documentatie voor ontwikkelaars met Tracks' REST API", url_for(:action => 'rest_api') %>.

-

Inhoud:

-
-

Heb je een tip om hier toe te voegen? - Vertel ons er over in onze - Tips and Tricks forum en misschien voegen we jouw tip toe op deze pagina in een toekomstige versie van Tracks. -

- - -

Email jezelf automatisch de acties met een aflopende deadline

- -

Als je de volgende regel toevoegd aan jouw crontab, dat ontvang je een e-mail op elke dag rond 05:00 met een lijst met acties waarvan de deadline afloopt binnen de komende 7 dagen.

- - - -

Uiteraard kan je ook een andere <%= link_to 'text feed gebruiken die Tracks biedt', feeds_path %> -- bijvoorbeeld een email met een lijst van acties voor een specifiek project naar een groep collega's die werken aan dat project?

- - -

Integreer Tracks met een email server om een actie via email naar Tracks te sturen

-

- Als Tracks draait op dezelfde server als jouw mailserver, dan kan je de geïntegreerde mail handler gebruiken van Tracks. Om dit in te stellen: -

-
    -
  • Ga naar <%= link_to t('layouts.navigation.preferences'), preferences_url %> - en stel in "<%= Preference.human_attribute_name('sms_email') %>" en - "<%= Preference.human_attribute_name('sms_context') %>" voor acties die - verzonden zijn via email (die bijv. komen via een SMS message)
  • -
  • In sendmail/qmail/postfix/whatever, stel een email address - alias in om berichten door te sturen naar -
    /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
  • -
  • Verstuur een email naar het net geconfigureerde e-mail adres!
  • -
-

Je kan ook de Rich Todo API gebruiken om acties te maken zoals "do laundry @ Home" - of "Call Bill > project X". Het onderwerp van het bericht zal de bijschrijving van de actie vullen, - de context, en het project, terwijl de body van het bericht de notities van de actie zal vullen. -

-

- Het kan nodig zijn om jouw site.yml te configureren om de message gateway te laten kijken naar het to: veld of het from: veld om - de Tracks-gebruiker op te zoeken met het emailadres uit dat veld.

-

Je kan ook alle email naar een specifieke Tracks gebruiker sturen. Stel mail_dispatch in site.yml in op single_user en geeft de login van de gebruiker door: -

TRACKS_MAIL_RECEIVER=<%=current_user.login%> /PATH/TO/TRACKS/bin/rails r -e production 'MessageGateway.receive(STDIN.read)'
-

diff --git a/app/views/preferences/_date_and_time.html.erb b/app/views/preferences/_date_and_time.html.erb index ba108cc6..3cd58db6 100644 --- a/app/views/preferences/_date_and_time.html.erb +++ b/app/views/preferences/_date_and_time.html.erb @@ -1,8 +1,8 @@ <%= pref_with_text_field('prefs', 'date_format') %> -
This will result in: <%= l(Time.zone.today, :format => current_user.prefs.date_format) %>
+
<%= I18n.t('preferences.result_in') %> <%= l(Time.zone.today, :format => current_user.prefs.date_format) %>

-Or pick one of the following:
+<%= I18n.t('preferences.pick_one') %>
<% [:default, :short, :long, :longer].each do |format| %>