chore: use native Azərbaycan spelling in user-facing strings
Replaces "Azeri" / "Azerbaijani" with the native form "Azərbaycan" in labels, descriptions, and Python comments. Field names / identifiers are unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
53d4eb1cc7
commit
c9032df3bf
|
|
@ -103,7 +103,7 @@ Priority-based matching in `_find_mapping_for_txn()`: purpose+party > purpose-on
|
|||
Three-tier party matching with configurable similarity thresholds:
|
||||
1. Exact VÖEN (tax ID) match
|
||||
2. Name similarity via `SequenceMatcher` (defaults: customer 90%, supplier 80%, purpose 70%)
|
||||
3. Optional Azerbaijani character normalization (Ə→E, ə→e, etc.)
|
||||
3. Optional Azərbaycan character normalization (Ə→E, ə→e, etc.)
|
||||
|
||||
### DocTypes
|
||||
|
||||
|
|
@ -129,7 +129,7 @@ Three-tier party matching with configurable similarity thresholds:
|
|||
- Progress published via `frappe.publish_realtime()` over Socket.IO (`kb_bt_import_progress`, `kb_bt_import_complete`)
|
||||
- Sensitive data (tokens, passwords) stored in Password-type fields (encrypted in DB)
|
||||
- Error logging via `frappe.log_error()` with `_mask()` hiding account numbers (7+ digits → `first3***last3`)
|
||||
- Party names latinized via `_latinize()` for bank transfers (Azerbaijani → ASCII)
|
||||
- Party names latinized via `_latinize()` for bank transfers (Azərbaycan → ASCII)
|
||||
- Card statements limited to 90-day range; cross-account transfers deduplicated by reference_no
|
||||
|
||||
### Scheduler Events
|
||||
|
|
|
|||
|
|
@ -2431,7 +2431,7 @@ _AZERI_MAP = str.maketrans("ƏəÜüÖöĞğİıÇ窺", "EeUuOoGgIiCcSs")
|
|||
|
||||
def _normalize(text, consider_azeri=True):
|
||||
"""Normalize text for similarity comparison.
|
||||
Optionally replaces Azerbaijani characters before lowercasing."""
|
||||
Optionally replaces Azərbaycan characters before lowercasing."""
|
||||
if not text:
|
||||
return ""
|
||||
s = str(text)
|
||||
|
|
|
|||
|
|
@ -65,10 +65,10 @@
|
|||
"options": "\nIgnore Case\nCase Sensitive"
|
||||
},
|
||||
{
|
||||
"description": "Override the global 'Consider Azerbaijani Characters' for this row's party-name matching. Blank = use the global setting.",
|
||||
"description": "Override the global 'Consider Azərbaycan Characters' for this row's party-name matching. Blank = use the global setting.",
|
||||
"fieldname": "azeri_mode",
|
||||
"fieldtype": "Select",
|
||||
"label": "Azeri Translit",
|
||||
"label": "Azərbaycan Translit",
|
||||
"options": "\nApply Translit\nStrict (No Translit)"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -115,10 +115,10 @@
|
|||
},
|
||||
{
|
||||
"default": "1",
|
||||
"description": "Consider replacement of Azerbaijani letters with Latin equivalents when matching",
|
||||
"description": "Consider replacement of Azərbaycan letters with Latin equivalents when matching",
|
||||
"fieldname": "consider_azeri_chars",
|
||||
"fieldtype": "Check",
|
||||
"label": "Consider Azerbaijani Characters"
|
||||
"label": "Consider Azərbaycan Characters"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
|
|
|
|||
|
|
@ -57,10 +57,10 @@
|
|||
"options": "\nIgnore Case\nCase Sensitive"
|
||||
},
|
||||
{
|
||||
"description": "Override the global 'Consider Azerbaijani Characters' for this row's party-name matching. Blank = use the global setting.",
|
||||
"description": "Override the global 'Consider Azərbaycan Characters' for this row's party-name matching. Blank = use the global setting.",
|
||||
"fieldname": "azeri_mode",
|
||||
"fieldtype": "Select",
|
||||
"label": "Azeri Translit",
|
||||
"label": "Azərbaycan Translit",
|
||||
"options": "\nApply Translit\nStrict (No Translit)"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ def _effective_case_insensitive(row, global_default):
|
|||
|
||||
|
||||
def _effective_azeri(row, global_default):
|
||||
"""Per-row Azeri Translit mode overrides the global Consider Azerbaijani Characters flag."""
|
||||
"""Per-row Azərbaycan Translit mode overrides the global Consider Azərbaycan Characters flag."""
|
||||
mode = (getattr(row, "azeri_mode", None) or "").strip()
|
||||
if mode == "Apply Translit":
|
||||
return True
|
||||
|
|
@ -70,7 +70,7 @@ def _build_name_to_party(settings):
|
|||
"""Counterparty text -> {"Customer": erp_customer} / {"Supplier": erp_supplier}.
|
||||
|
||||
Each row is indexed under up to four key variants depending on its effective
|
||||
Case Mode and Azeri Translit settings (both of which fall back to globals):
|
||||
Case Mode and Azərbaycan Translit settings (both of which fall back to globals):
|
||||
strict / lowercase / translit / translit + lowercase.
|
||||
"""
|
||||
global_ci = bool(getattr(settings, "case_insensitive_party_match", 1))
|
||||
|
|
@ -117,7 +117,7 @@ def _build_name_to_party(settings):
|
|||
def _resolve_party_from_name(name, name_to_party, payment_type):
|
||||
"""(party_type, erp_party) for `name`, or (None, None). Tries up to four
|
||||
lookup variants (strict / lower / translit / translit+lower); the index
|
||||
encodes per-row case/azeri decisions, so flags aren't needed here."""
|
||||
encodes per-row case/azərbaycan decisions, so flags aren't needed here."""
|
||||
key = (name or "").strip()
|
||||
if not key:
|
||||
return None, None
|
||||
|
|
@ -408,7 +408,7 @@ def create_purpose_mappings(transactions, paid_from=None, paid_to=None, document
|
|||
|
||||
|
||||
def _norm_text(text, az):
|
||||
"""Lowercased + (optionally) Azeri-translit form for purpose/party comparison."""
|
||||
"""Lowercased + (optionally) Azərbaycan-translit form for purpose/party comparison."""
|
||||
s = (text or "").lower()
|
||||
if az:
|
||||
s = _translit_az(s)
|
||||
|
|
@ -423,7 +423,7 @@ def _find_mapping_for_txn(txn, transaction_mappings, purpose_text_cache, purpose
|
|||
fallback by counterparty_type. "Exact" = the keyword is a substring of the
|
||||
transaction's description; "fuzzy" = partial-ratio >= purpose_threshold.
|
||||
|
||||
`az` toggles Azerbaijani transliteration of purpose / party text before
|
||||
`az` toggles Azərbaycan transliteration of purpose / party text before
|
||||
comparison (driven by settings.consider_azeri_chars).
|
||||
"""
|
||||
payment_type = "Pay" if txn.get("drcr") == "D" else "Receive"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ _AZ_MAP = str.maketrans("ƏəİışŞÇçÖöÜüĞğ", "EeIissCcOoUuGg")
|
|||
|
||||
|
||||
def _latinize(text: str, max_len: int = None) -> str:
|
||||
"""Transliterate Azerbaijani → Latin, strip non-ASCII, truncate."""
|
||||
"""Transliterate Azərbaycan → Latin, strip non-ASCII, truncate."""
|
||||
text = str(text or "").translate(_AZ_MAP)
|
||||
text = text.encode("ascii", errors="ignore").decode("ascii").strip()
|
||||
return text[:max_len] if max_len else text
|
||||
|
|
|
|||
Loading…
Reference in New Issue