For some reason, my code didn't seem to load, here it goes again, just in case:
PigLatin[x_] :=
Block[{lowerVowels = {"a", "e", "i", "o", "u"}, consonants},
consonants = {"B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N",
"P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z", "b", "c", "d",
"f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t",
"v", "w", "x", "y", "z", "A", "E", "I", "O", "U"};
StringRiffle[Map[If[StringFreeQ[#, lowerVowels], #,
If[StringContainsQ[StringTake[#, 1], lowerVowels],
If[
Total[Boole[
StringContainsQ[Characters[#], PunctuationCharacter]]] == 0,
# <> "way",
StringJoin[Drop[Characters[#], -1]] <> "way" <>
Last[Characters[x]]],
If[
Total[Boole[
StringContainsQ[Characters[#], PunctuationCharacter]]] == 0,
StringJoin[Reverse[TakeDrop[Characters[#],
LengthWhile[
Boole[StringContainsQ[Characters[#], consonants]], #1 ==
1 &]
]]] <> "ay",
StringJoin[Reverse[TakeDrop[Drop[Characters[#], -1],
LengthWhile[
Boole[StringContainsQ[Characters[#], consonants]], #1 ==
1 &]
]]] <> "ay" <> Last[Characters[#]]]]] &, StringSplit[x]]]]