Yo mismo encontré una solución y me gustaría compartir el resultado con usted: construí una especie de función torpe que encuentra y reemplaza los caracteres no deseados si aparecen en la cadena (desafortunadamente AppleScript devuelve malos resultados si el hallazgo y -emplazar no encuentra una ocurrencia.
Editar: Como he encontrado que los caracteres del corchete no son críticos, su transformación se excluye del script pegado a continuación. Por lo tanto, las agujas indicadas en la parte inferior de la función UnAccentString()
deben ajustarse, si los corchetes también deben reemplazarse.
La función findAndReplace()
es cortesía de MacScripter , gracias.
Tenga en cuenta que el orden de los reemplazos dentro de la función UnAccentString()
es crucial. Cuando coloca la transformación 'Ü' sobre la 'ü', obtendrá malos resultados. Curiosamente, OS X parece considerar un 'ü' como válido cuando se busca 'Ü's, pero no al revés ni con otros * umlauts. No tengo idea de por qué sucede esto, pero funciona con este orden:
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
Por lo tanto, llamando a la función con la siguiente cadena:
return UnAccentString("Übersetzungen im alltäglichen Leben eines Riñóns und eines Négligée à Noël") as text
volverá
Uebersetzungen-im-alltaeglichen-Leben-eines-Rinons-und-eines-Negligee-a-Noel
Esta es una lista de todos los caracteres que busca la función y sus contrapartes respectivas con las que se reemplazarán:
- Ü - > Ue
- Ä - > Ae
- Ö - > Oe
- ü - > Ue
- ä - > ae
- ö - > oe
- é - > e
- è - > e
- à - > a
- ó - > o
- á - > a
- ú - > u
- í - > i
- Á - > A
- É - > E
- Í - > Yo
- Ó - > O
- Ú - > U
- ñ - > n
- Ñ - > N
- ê - > e
- Ê - > E
- ë - > e
- Ë - > E
- È - > E
- : - > (nulo)
- , - > (nulo)
- (espacio) - > -
- % - > (nulo)
- '- > (nulo)
Espero que ayude a alguien.
Saludos, nic.