FluentCRM 3.2.0: about 230 strings no translation file can reach
About 230 strings in FluentCRM 3.2.0 and Pro 3.2.0 stay English, whatever translation is installed. I found them while translating both plugins into German (6,188 strings, informal and formal). Everything below was measured on 3.2.0.
1. Pro messaging: 220 strings without a translation map
The SMS/WhatsApp screens look up their texts with $t(), but none of these 220 keys is in app/Services/TransStrings.php, and Pro has no map of its own. So inbox, template editor, audience selector and the message history in the contact profile stay English in every language. Examples: "Conversations", "Choose an approved template", "Add Unsubscribe Button", "Consent confirmed". Most of them sit in Inbox.js (53), TemplateEditor.js (38), OneTimeAudienceSelector.js (33), ProfileMessages.js (30), Templates.js (27) and CreateFlow2.js (26). I can post the full list.
2. Missing keys in the core map
- Plurals via
$_n(): "%d Email / %d Emails" and "%d subscriber / %d subscribers" in the sequence list, "%d field / %d fields" in the company form - "Could not import campaign", "No email templates found.", "Upgrade to FluentCRM Pro to Get Messaging Settings"
- "System Admin Tools", the only one of 23 titles in the settings menu without a map entry
3. Hard-coded English
- Dashboard period selector: "30 Days", "60 Days", β¦ (
periodOptionsin Dashboard.js) - Default title of a new email template: "Untitled - Created at β¦"
4. Raw keys in the English UI
TransStrings.php passes AbCart_Opt_Out_Help_Prefix and AbCart_Opt_Out_Help_Suffix to __() as source strings, so the abandoned cart settings show the keys themselves. Probably meant: "Use the smartcode" and "to let users opt out of cart tracking."
5. Two versions of the runtime translator
One replaces /%(\d*)\$?s|%d/, the other /%(\d*)s|%d/. The second one leaves a stray $s behind when a string uses %1$s.
6. Typos in source strings
"Max Rune Time", "Compact Compact View", "may not 100% correct". One hint about FluentCart data says "FluentCRM".
7. One source string, two meanings
"Cancelled" is used for sequences and for orders, "Title" for notes and for the name prefix (Mr/Mrs) in the email preference form. German needs different words here; a msgctxt would separate them.
Happy to test fixes.
Peter
Two more from the same round, both on 3.2.0:
8. Admin bar search window
adminbar-search.js looks up "Search in CRM", "Best Matches" and "Quick links" in fcrm_adminbar_search_vars.trans. AdminBar.php doesn't provide the first two, and the third only as "Quick Links" (capital L), so all three stay English.
9. CRM profile widget in FluentCommunity Pro
ContactAdvancedFilter::pushCrmProfile() prints the contact status as ucfirst($profile->status) ("Unsubscribed") and the counters as ucfirst() of the keys from Subscriber::stats() ("Emails", "Opens", "Clicks"). None of them goes through gettext. fluentcrm_subscriber_statuses(true) already has translated status labels.