我有一个巨大的工作表,我需要将其从英语音译成阿拉伯语。例如,我希望此单元格“维修电话”为“́ون فور ريبير”。这基本上意味着将字母从英语转换为阿拉伯语,不是从英语翻译成阿拉伯语。
我确实为此搜索了一个特定的代码,但在我想出这段代码之前我找不到一个可行的解决方案。从理论上讲,它应该有效,但问题是它不起作用。我修复了我的 Windows 区域以允许阿拉伯语 Unicode,但它仍然没有返回任何值,而是返回空值。
Function ArabicTransliterate(inputStr As String) As String
Dim outputStr As String
Dim currentChar As String
Dim nextChar As String
Dim prevChar As String
Dim i As Integer
Dim lenStr As Integer
Dim vowel As Boolean
Dim isLastChar As Boolean
lenStr = Len(inputStr)
For i = 1 To lenStr
currentChar = Mid(inputStr, i, 1)
If i < lenStr Then
nextChar = Mid(inputStr, i + 1, 1)
Else
nextChar = ""
End If
If i > 1 Then
prevChar = Mid(inputStr, i - 1, 1)
Else
prevChar = ""
End If
Select Case currentChar
Case "a", "A"
If i = lenStr Then
outputStr = outputStr & "ة"
ElseIf nextChar = "e" Or nextChar = "E" Then
outputStr = outputStr & "اي"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "أ"
Else
outputStr = outputStr & "ا"
End If
vowel = True
Case "b", "B"
outputStr = outputStr & "ب"
vowel = False
Case "c", "C"
If nextChar = "h" Or nextChar = "H" Then
outputStr = outputStr & "تش"
i = i + 1
Else
outputStr = outputStr & "ك"
End If
vowel = False
Case "d", "D"
outputStr = outputStr & "د"
vowel = False
Case "e", "E"
If i = 1 And (nextChar = "u" Or nextChar = "U") Then
outputStr = outputStr & "يو"
ElseIf prevChar = "a" Or prevChar = "A" Then
outputStr = outputStr & "أ"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "i" Or prevChar = "I" Then
outputStr = outputStr & "إ"
Else
outputStr = outputStr & "ا"
End If
vowel = True
Case "f", "F"
outputStr = outputStr & "ف"
vowel = False
Case "g", "G"
outputStr = outputStr & "ج"
vowel = False
Case "h", "H"
If prevChar = "t" Or prevChar = "T" Then
outputStr = outputStr & "ة"
ElseIf prevChar = "s" Or prevChar = "S" Then
outputStr = outputStr & "ش"
Else
outputStr = outputStr & "ه"
End If
vowel = False
Case "i", "I"
If i = lenStr And (prevChar = "e" Or prevChar = "E") Then
outputStr = outputStr & "ي"
ElseIf i = lenStr And (prevChar = "o" Or prevChar = "O") Then
outputStr = outputStr & "يو"
ElseIf i = lenStr And prevChar <> "" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "a" Or prevChar = "A" Then
outputStr = outputStr & "أ"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "u" Or prevChar = "U" Then
outputStr = outputStr & "و"
ElseIf prevChar = "o" Or prevChar = "O" Then
outputStr = outputStr & "و"
Else
outputStr = outputStr & "ي"
End If
vowel = True
Case "j", "J"
outputStr = outputStr & "ج"
vowel = False
Case "k", "K"
outputStr = outputStr & "ك"
vowel = False
Case "l", "L"
outputStr = outputStr & "ل"
vowel = False
Case "m", "M"
outputStr = outputStr & "م"
vowel = False
Case "n", "N"
outputStr = outputStr & "ن"
vowel = False
Case "o", "O"
If i = 1 And (nextChar = "u" Or nextChar = "U") Then
outputStr = outputStr & "يو"
ElseIf prevChar = "a" Or prevChar = "A" Then
outputStr = outputStr & "أ"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "i" Or prevChar = "I" Then
outputStr = outputStr & "إ"
Else
outputStr = outputStr & "ا"
End If
vowel = True
Case "p", "P"
outputStr = outputStr & "ب"
vowel = False
Case "q", "Q"
outputStr = outputStr & "ك"
vowel = False
Case "r", "R"
outputStr = outputStr & "ر"
vowel = False
Case "s", "S"
If nextChar = "h" Or nextChar = "H" Then
outputStr = outputStr & "ش"
i = i + 1
Else
outputStr = outputStr & "س"
End If
vowel = False
Case "t", "T"
If nextChar = "h" Or nextChar = "H" Then
outputStr = outputStr & "ث"
i = i + 1
ElseIf nextChar = "i" Or nextChar = "I" Then
outputStr = outputStr & "ت"
i = i + 1
ElseIf nextChar = "e" Or nextChar = "E" Then
outputStr = outputStr & "ت"
i = i + 1
ElseIf nextChar = "a" Or nextChar = "A" Then
outputStr = outputStr & "ت"
i = i + 1
Else
outputStr = outputStr & "ت"
End If
vowel = False
Case "u", "U"
If prevChar = "a" Or prevChar = "A" Then
outputStr = outputStr & "أ"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "أ" !----------------------------------------------------------------
ElseIf prevChar = "i" Or prevChar = "I" Then
outputStr = outputStr & "إ"
Else
outputStr = outputStr & "ا"
End If
vowel = True
Case "v", "V"
outputStr = outputStr & "ف"
vowel = False
Case "w", "W"
outputStr = outputStr & "و"
vowel = False
Case "x", "X"
outputStr = outputStr & "كس"
vowel = False
Case "y", "Y"
If i = lenStr And (prevChar = "a" Or prevChar = "A") Then
outputStr = outputStr & "ئ"
ElseIf i = lenStr And (prevChar = "e" Or prevChar = "E") Then
outputStr = outputStr & "ي"
ElseIf i = lenStr And (prevChar = "i" Or prevChar = "I") Then
outputStr = outputStr & "ي"
ElseIf i = lenStr And (prevChar = "o" Or prevChar = "O") Then
outputStr = outputStr & "ي"
ElseIf nextChar = "a" Or nextChar = "A" Then
outputStr = outputStr & "ي"
ElseIf nextChar = "e" Or nextChar = "E" Then
outputStr = outputStr & "ي"
ElseIf nextChar = "i" Or nextChar = "I" Then
outputStr = outputStr & "ي"
ElseIf nextChar = "o" Or nextChar = "O" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "a" Or prevChar = "A" Then
outputStr = outputStr & "آ"
ElseIf prevChar = "e" Or prevChar = "E" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "i" Or prevChar = "I" Then
outputStr = outputStr & "ي"
ElseIf prevChar = "o" Or prevChar = "O" Then
outputStr = outputStr & "ي"
Else
outputStr = outputStr & "ي"
End If
vowel = True
Case "z", "Z"
outputStr = outputStr & "ز"
vowel = False
Case " "
outputStr = outputStr & " "
vowel = False
Case "-"
outputStr = outputStr & "-"
vowel = False
Case "_"
outputStr = outputStr & "_"
vowel = False
Case "."
outputStr = outputStr & "."
vowel = False
Case Else
'Handles any other characters that are not letters, numbers, or spaces
outputStr = outputStr & currentChar
vowel = False
End Select
prevChar = currentChar
Next i
'Return the translated string
ArabicTranslate = outputStr
End Function