Uhm… I can’t reproduce your issue. To me, the stock buttons will always display English labels, unless I set a specific wx.Locale.
I suggest that you try your code with a recent version of wxPython first.
Here is a shorter example:
import wx
class Main(wx.Frame):
def __init__(self, *a, **k):
wx.Frame.__init__(self, *a, **k)
self.locale = wx.Locale(wx.LANGUAGE_RUSSIAN) # try commenting out this
p = wx.Panel(self)
wx.Button(p, wx.ID_CANCEL, pos=(10, 10))
app = wx.App()
Main(None).Show()
app.MainLoop()
This works for me on wxPython 4.0.6 (at least).
Besides, if you are in the business of changing locale in your app, you may want to upgrade to a more recent Python version, since Python 3.8 messed up the Windows locale settings a bit. (However, I don’t think this is the issue with your specific example).
Edit: oh, I didn’t notice at first… “I launch the application through PyCharm”… Never, ever launch your application through your editor, unless you know exactly what you are doing. Editors like to mess up your environment without telling you. Maybe PyCharm sets up your locale for you.