Skip to content

[功能异常] Mac :TypeError in TranslationManager.get_language_code when locale.getlocale() returns None #449

Open
@PlxloYzb

Description

@PlxloYzb

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:

  1. python main.py
  2. 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"

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions