Open
Description
When running the main.py
script, a TypeError
occurs in the get_language_code
method of the TranslationManager
class if locale.getlocale()
returns (None, None)
. This happens because the code attempts to check "Chinese" in language_code
when language_code
is None
, which is not iterable.
Steps to reproduce the behavior:
- python main.py
- error info:
Traceback (most recent call last):
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/main.py", line 4, in <module>
from src.application import TikTokDownloader
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/application/__init__.py", line 1, in <module>
from .TikTokDownloader import TikTokDownloader
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/application/TikTokDownloader.py", line 9, in <module>
from src.config import Parameter
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/config/__init__.py", line 1, in <module>
from .parameter import Parameter
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/config/parameter.py", line 13, in <module>
from ..custom import BLANK_PREVIEW
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/custom/__init__.py", line 1, in <module>
from .function import (
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/custom/function.py", line 5, in <module>
from ..translation import _
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/translation/__init__.py", line 1, in <module>
from .translate import switch_language, _
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/translation/translate.py", line 57, in <module>
translation_manager = TranslationManager()
^^^^^^^^^^^^^^^^^^^^
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/translation/translate.py", line 24, in __init__
self.get_language_code(),
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bruceplxl/Dev/TikTokDownloader-5.5/src/translation/translate.py", line 31, in get_language_code
return "zh_CN" if "Chinese" in language_code else "en_US"
^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable
Proposed Solution
open translate.py in ./translation, edit line 30 :
def get_language_code() -> str:
# 获取当前系统的语言和区域设置
language_code, __ = getlocale()
if language_code is None:
return "en_US" # Handle None case by returning a default language code
return "zh_CN" if "Chinese" in language_code else "en_US"