J'ai trouvé une solution moi-même et je voudrais partager le résultat avec vous : j'ai créé une sorte de fonction maladroite qui recherche et remplace les caractères non désirés s'ils apparaissent dans la chaîne de caractères (malheureusement, AppleScript renvoie de mauvais résultats si la recherche et le remplacement ne trouvent pas d'occurrence).
Édition : Comme j'ai constaté que les caractères en crochets étaient sans importance, leur transformation est exclue du script ci-dessous. Par conséquent, les éléments donnés au bas de la fonction UnAccentString()
doivent être ajustés si les crochets doivent également être remplacés.
La fonction findAndReplace()
est offerte par MacScripter, merci.
Soyez conscient que l'ordre des remplacements dans la fonction UnAccentString()
est crucial. Si vous placez la transformation 'Ü' au-dessus de 'ü', vous obtiendrez de mauvais résultats. Curieusement, OS X semble considérer un 'ü' comme valide lorsqu'il recherche des 'Ü', mais pas vice versa ni avec d'autres umlauts. Aucune idée pour quoi cela se passe mais ça fonctionne avec cet ordre :
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...
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
Par conséquent, appeler la fonction avec la chaîne suivante :
return UnAccentString("Übersetzungen im alltäglichen Leben eines Riñóns und eines Négligée à Noël") as text
renverra
Uebersetzungen-im-alltaeglichen-Leben-eines-Rinons-und-eines-Negligee-a-Noel
Voici la liste de tous les caractères que la fonction recherche et leurs contreparties avec lesquelles ils sont remplacés :
- Ü --> 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)
- (espace) --> -
- % --> (null)
- ' --> (null)
J'espère que cela aidera quelqu'un. Salutations, nic.