Ho trovato una soluzione da solo e vorrei condividere il risultato con te: ho creato una specie di funzione maldestra che trova e sostituisce i caratteri indesiderati se compaiono nella stringa (purtroppo AppleScript restituisce risultati errati se il find- e-replace non trova alcuna occorrenza.
Modifica: come ho trovato i caratteri di parentesi per essere acritico, la loro trasformazione è esclusa dallo script incollato di seguito. Pertanto, gli aghi indicati nella parte inferiore della funzione UnAccentString()
devono essere regolati, se anche le parentesi devono essere sostituite.
La funzione findAndReplace()
è per gentile concessione di MacScripter , grazie.
Tieni presente che l'ordine delle sostituzioni all'interno della funzione UnAccentString()
è cruciale. Quando posizioni la trasformazione "Ü" sopra il "ü", otterrai risultati sbagliati. È interessante notare che OS X sembra considerare un 'ü' valido quando si cerca 'Ü's, ma non viceversa, né con altri dieresi *. Non ho idea del motivo per cui ciò sta accadendo, ma funziona con questo ordine:
on UnAccentString(TheString)
if TheString contains "ü" then
set TheString to findAndReplace("ü", "Ue", TheString)
end if
if TheString contains "ä" then
set TheString to findAndReplace("ä", "ae", TheString)
end if
if TheString contains "ö" then
set TheString to findAndReplace("ö", "oe", TheString)
end if
if TheString contains "Ü" then
set TheString to findAndReplace("Ü", "Ue", TheString)
end if
if TheString contains "Ä" then
set TheString to findAndReplace("Ä", "Ae", TheString)
end if
if TheString contains "Ö" then
set TheString to findAndReplace("Ö", "Oe", TheString)
end if
if TheString contains "é" then
set TheString to findAndReplace("é", "e", TheString)
end if
if TheString contains "è" then
set TheString to findAndReplace("è", "e", TheString)
end if
if TheString contains "à" then
set TheString to findAndReplace("à", "a", TheString)
end if
if TheString contains "ó" then
set TheString to findAndReplace("ó", "o", TheString)
end if
if TheString contains "á" then
set TheString to findAndReplace("á", "a", TheString)
end if
if TheString contains "ú" then
set TheString to findAndReplace("ú", "u", TheString)
end if
if TheString contains "í" then
set TheString to findAndReplace("í", "i", TheString)
end if
if TheString contains "Á" then
set TheString to findAndReplace("Á", "A", TheString)
end if
if TheString contains "É" then
set TheString to findAndReplace("É", "E", TheString)
end if
if TheString contains "Í" then
set TheString to findAndReplace("Í", "I", TheString)
end if
if TheString contains "Ó" then
set TheString to findAndReplace("Ó", "O", TheString)
end if
if TheString contains "Ú" then
set TheString to findAndReplace("Ú", "U", TheString)
end if
if TheString contains "ñ" then
set TheString to findAndReplace("ñ", "n", TheString)
end if
if TheString contains "Ñ" then
set TheString to findAndReplace("Ñ", "N", TheString)
end if
if TheString contains "ê" then
set TheString to findAndReplace("ê", "e", TheString)
end if
if TheString contains "Ê" then
set TheString to findAndReplace("Ê", "E", TheString)
end if
if TheString contains "ë" then
set TheString to findAndReplace("ë", "e", TheString)
end if
if TheString contains "Ë" then
set TheString to findAndReplace("Ë", "E", TheString)
end if
if TheString contains "È" then
set TheString to findAndReplace("È", "E", TheString)
end if
if TheString contains ":" then
set TheString to findAndReplace(":", "", TheString)
end if
if TheString contains "," then
set TheString to findAndReplace(",", "", TheString)
end if
if TheString contains " " then
set TheString to findAndReplace(" ", "-", TheString)
end if
if TheString contains "%" then
set TheString to findAndReplace("%", "", TheString)
end if
if TheString contains "'" then
set TheString to findAndReplace("'", "", TheString)
end if
return TheString & ".pdf" as text
end UnAccentString
on findAndReplace(tofind, toreplace, TheString)
set ditd to text item delimiters
set res to missing value
set text item delimiters to tofind
repeat with tis in text items of TheString
if res is missing value then
set res to tis
else
set res to res & toreplace & tis
end if
end repeat
set text item delimiters to ditd
return res
end findAndReplace
Pertanto, chiama la funzione con la seguente stringa:
return UnAccentString("Übersetzungen im alltäglichen Leben eines Riñóns und eines Négligée à Noël") as text
restituirà
Uebersetzungen-im-alltaeglichen-Leben-eines-Rinons-und-eines-Negligee-a-Noel
Questa è una lista di tutti i caratteri che la funzione cerca e le rispettive controparti con cui vengono sostituiti:
- Ü - > Ue
- Ä - > Ae
- Ö - > Oe
- ü - > Ue
- ä - > ae
- ö - > oe
- é - > e
- è - > e
- à - > a
- ó - > o
- á - > a
- ú - > u
- í - > i
- Á - > A
- É - > E
- Í - > I
- Ó - > O
- Ú - > U
- ñ - > n
- Ñ - > N
- ê - > e
- Ê - > E
- ë - > e
- Ë - > E
- È - > E
- : - > (Null)
- , - > (Null)
- (spazio) - > -
- % - > (Null)
- '- > (Null)
Spero che aiuti qualcuno.
Saluti, nic.