Пример, данный Роб, замечательный, но не является потокобезопасным. Вот версия, которая работает с потоками:
import locale
import threading
from datetime import datetime
from contextlib import contextmanager
LOCALE_LOCK = threading.Lock()
@contextmanager
def setlocale(name):
with LOCALE_LOCK:
saved = locale.setlocale(locale.LC_ALL)
try:
yield locale.setlocale(locale.LC_ALL, name)
finally:
locale.setlocale(locale.LC_ALL, saved)
# Let's set a non-US locale
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
# Example to write a formatted English date
with setlocale('C'):
print(datetime.now().strftime('%a, %b')) # e.g. => "Thu, Jun"
# Example to read a formatted English date
with setlocale('C'):
mydate = datetime.strptime('Thu, Jun', '%a, %b')
Создает поточный менеджер контекста, используя глобальную блокировку, и позволяет вам иметь несколько потоков, выполняющих языковой код, используя LOCALE_LOCK. Он также обрабатывает исключения из инструкции yield, чтобы гарантировать, что исходный язык всегда восстанавливается.
Эта проблема возникает, когда вы просто устанавливаете сборку, которая была создана при запуске приложения напрямую с помощью adb.
Чтобы решить эту проблему, выполните сборку из Android Studio> Build> Build Apk. Всплывающее окно внизу справа появится при выполнении задачи сборки apk.
blockquote>Вы можете найти этот сгенерированный apk внутри
YourApp>build>outputs>apk
.Причина:
Когда вы запускаете приложение напрямую с помощью adb через USB-кабель. Затем Android просто выбирает библиотеки только для вашего устройства. Эта сборка не будет действительна некоторое время для других устройств.
Теперь, когда вы используете Build Apk Tool. Тогда на самом деле эта сборка является глобальной сборкой со всеми необходимыми библиотеками внутри нее.