mirror of
https://github.com/we-promise/sure.git
synced 2026-05-25 13:34:58 +00:00
* Extract hardcoded strings to i18n
Replace numerous hardcoded English strings with I18n lookups (t / I18n.t) across controllers, views, helpers, and components, and convert model validation error messages to symbol keys. Added multiple locale files under config/locales for models and views. This centralizes user-facing notices/alerts, UI text, import/validation messages, and prepares the app for localization and easier translation maintenance.
* Update en.yml
* Update preview-cleanup.yml
* Revert "Update preview-cleanup.yml"
This reverts commit 1ba6d3c34c.
* test: align i18n assertions with translated messages
* Standardize balance error key and tweak locales
Replace SophtronAccount's :requires_balance error key with :no_balance and update related locale strings for sophtron, plaid, and simplefin accounts to use the new key and clearer copy. Also switch the QIF upload redirect notice to use a relative translation key (t('.qif_uploaded')), remove an unused SSO providers help line, and fix a trailing-newline/whitespace issue in the subscriptions locale. These changes standardize validation keys and improve translation consistency and messaging.
---------
Co-authored-by: KiloClaw <kiloclaw@openclaw.ai>
32 lines
1.4 KiB
Plaintext
32 lines
1.4 KiB
Plaintext
<%# locals: (chat: nil, message_hint: nil) %>
|
|
|
|
<div id="chat-form" class="space-y-2">
|
|
<% model = chat && chat.persisted? ? [chat, Message.new] : Chat.new %>
|
|
|
|
<%= form_with model: model,
|
|
class: "flex lg:flex-col gap-2 bg-container px-2 py-1.5 rounded-full lg:rounded-lg shadow-border-xs",
|
|
data: { chat_target: "form" } do |f| %>
|
|
|
|
<%# In the future, this will be a dropdown with different AI models %>
|
|
<%= f.hidden_field :ai_model, value: default_ai_model %>
|
|
|
|
<%= f.text_area :content, placeholder: t(".placeholder"), value: message_hint,
|
|
class: "w-full border-0 focus:ring-0 text-sm resize-none px-1 bg-transparent",
|
|
data: { chat_target: "input", action: "input->chat#autoResize keydown->chat#handleInputKeyDown" },
|
|
rows: 1 %>
|
|
|
|
<div class="flex items-center justify-between gap-1">
|
|
<div class="items-center gap-1 hidden lg:flex">
|
|
<%# These are disabled for now, but in the future, will all open specific menus with their own context and search %>
|
|
<% ["plus", "command", "at-sign", "mouse-pointer-click"].each do |icon| %>
|
|
<%= icon(icon, as_button: true, disabled: true, class: "cursor-not-allowed", title: "Coming soon") %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<%= icon("arrow-up", as_button: true, type: "submit") %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<p class="text-xs text-secondary"><%= t(".disclaimer") %></p>
|
|
</div>
|