Направляющие и I18n: локализованные шаблоны по сравнению с локализованной строкой

Спросите себя следующий вопрос: , почему Вы хотите сохранить номера кредитных карт во-первых ? Возможности состоят в том, что Вы не делаете. На самом деле, если Вы делаете , хранят их и умеют иметь один украденный, Вы могли бы смотреть на некоторую серьезную ответственность.

я записал приложение, которое действительно хранит номера кредитных карт (так как транзакции были обработаны офлайн). Вот хороший способ сделать это:

  • Получают сертификат SSL!
  • Создают форму для получения CC# от пользователя.
  • Шифруют часть (не все!) CC# и хранилища это в Вашей базе данных. (Я предложил бы средние 8 цифр.) Используют метод устойчивого шифрования и секретный ключ.
  • Отправляют остаток по почте от CC# тому, кто бы ни обрабатывает Ваши транзакции (вероятно, самостоятельно) с идентификатором человека для обработки.
  • , Когда Вы войдете в систему позже, Вы введете в идентификаторе и отправленной по почте части CC#. Ваша система может дешифровать другую часть и повторно объединиться для получения полного числа, таким образом, можно обработать транзакцию.
  • Наконец, удалите запись онлайн. Мое параноидальное решение состояло в том, чтобы перезаписать запись со случайными данными перед удалением, для удаления возможности восстанавливания после удаления.

Это походит на большую работу, но никогда не записывая полный CC# нигде, Вы делаете ее чрезвычайно трудно для хакера для нахождения чего-либо значения на веб-сервере. Доверяйте мне, это стоит душевного спокойствия.

6
задан Simone Carletti 26 November 2009 в 15:48
поделиться

1 ответ

В Rails (по крайней мере версия 2.3.4) партиалы соблюдают те же настройки интернационализации, что и представления и шаблоны, поэтому вы могли бы поместить большие объемы текста в части, которые переведены, сохраняя при этом ваши особенности в исходном виде. Для меток и «меньшего» текста можно использовать метод перевода t (...), как вы предложили. Итак, чтобы запустить ваш конкретный пример:

# app/wizards/edit.html.erb
<% javascript_content_for :head do %>
$(function() {
  $("#choices :radio").change(function() {
    $(".choice-wizard").hide();
    $("#" + $(this).val()).show();
  });
});
<% end %>

<h1><%= title t(".title") %></h1>
<div class="widget">
  <div class="entry form">
    <h2><%= title t(".header_choices") %></h1>
    <% form_tag "#", :id => "choices" do %>
      <p>
        <%= radio_button_tag :choice, "with" %>
        <%= label_tag "choice_with", "..." %>
      </p>
      <p>
        <%= radio_button_tag :choice, "without" %>
        <%= label_tag "choice_without", "..." %>
      </p>
    <% end %>
    <div id="with" class="choice-wizard" style="display: none;">
      <!-- to be localized -->
      <%= render :partial => 'dear_readers' %>
...

# app/views/wizards/_dear_readers.en.html.erb
<h3>A Title</h3>
...

# app/views/wizards/_dear_readers.sv.html.erb
<h3>Bork bork bork!</h3>
...

И так далее. Мои извинения Швеции.

Другая возможность пойти с моим комментарием ниже:

# app/views/wizards/edit.html.erb
<%= render :partial => 'dear_readers' %>
<% javascript_content_for :head do %>
$(function() {
  $("#choices :radio").change(function() {
    $(".choice-wizard").hide();
    $("#" + $(this).val()).show();
  });
});
<% end %>

<h1><%= title t(".title") %></h1>
<div class="widget">
  <div class="entry form">
    <h2><%= title t(".header_choices") %></h1>
    <% form_tag "#", :id => "choices" do %>
      <p>
        <%= radio_button_tag :choice, "with" %>
        <%= label_tag "choice_with", "..." %>
      </p>
      <p>
        <%= radio_button_tag :choice, "without" %>
        <%= label_tag "choice_without", "..." %>
      </p>
    <% end %>
    <div id="with" class="choice-wizard" style="display: none;">
      <!-- to be localized -->
      <%= yield :paragraph_1 %>
      <%= yield :paragraph_2 %>
      ...

# app/wizards/_dear_readers.en.html.erb
<% content_for :paragraph_1 %>
  <h3>Title ...</h3>
  <p>Content ... </p>
<% end %>
<% content_for :paragraph_2 %>
  ...
<% end %>
...

И так далее для каждого языка, который вы поддерживаете. Как я упоминал в комментарии, который вдохновил на это, описанный здесь подход выглядит так, будто мы подбираем решение одной проблемы - СУХИМ разделяемую разметку (в виде навигации по сайту, боковых панелей и т. Д.) В решение для другая проблема, большие объемы переведенного текста. Использование content_for / yield в таком случае кажется немного нетрадиционным, но это может быть приемлемым решением вашей проблемы.

7
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: