Skip to content

Conversation

@BLumia
Copy link
Member

@BLumia BLumia commented May 29, 2025

修复地区代码不完全匹配时,翻译不会被加载的问题.

Summary by Sourcery

Use QTranslator::load to load plugin translations with locale-based lookup and fallback instead of requiring exact locale code match

Bug Fixes:

  • Load translations via QTranslator::load using system locale and translation directory to support partial locale matches
  • Improve log messages to report translation file path and locale details on load failure

修复地区代码不完全匹配时,翻译不会被加载的问题.

Log:
@deepin-ci-robot
Copy link

deepin pr auto review

关键摘要:

  • 代码中使用了QLocale::system().name(),但在新代码中使用了QLocale::system().uiLanguages(),需要确认这是否符合预期。
  • 新代码中直接使用了QLocale::system(),而没有检查是否为空,可能会导致潜在的空指针异常。
  • 新代码中使用了QLocale::system().uiLanguages(),这是一个数组,可能需要进一步处理以适应单个语言环境。
  • 新代码中使用了QLatin1String("_"),这可能会导致与本地化文件命名不一致的问题,需要确认是否正确。

是否建议立即修改:

@sourcery-ai
Copy link

sourcery-ai bot commented May 29, 2025

Reviewer's Guide

Refactors translation loading in DAppletLoaderPrivate::loadTranslation to use QTranslator::load with QLocale overload for flexible locale matching, replacing manual file path checks and enhancing logging.

Sequence Diagram for Updated Translation Loading in DAppletLoaderPrivate

sequenceDiagram
    participant DLP as DAppletLoaderPrivate
    participant QL as QLocale
    participant QT as QTranslator
    participant APP as qApp

    DLP->>QT: new QTranslator(qApp)
    DLP->>QL: system()
    QL-->>DLP: systemLocale
    DLP->>QT: load(systemLocale, pluginId, "_", pluginTranslationDir)
    alt Load Successful
        QT-->>DLP: true
        DLP->>DLP: Store translator in m_pluginTranslators
        DLP->>APP: installTranslator(translator)
        DLP->>DLP: Log success (using translator.filePath())
    else Load Failed
        QT-->>DLP: false
        DLP->>DLP: Log failure (with QLocale::system().uiLanguages())
        DLP->>QT: deleteLater()
    end
Loading

Class Diagram: DAppletLoaderPrivate and Updated Translation Handling

classDiagram
    class DAppletLoaderPrivate {
        -m_pluginTranslators: QMap<QString, QTranslator*>
        +loadTranslation(const DPluginMetaData &pluginData): void
    }
    class QTranslator {
        +load(const QLocale &locale, const QString &filename, const QString &prefix, const QString &directory, const QString &suffix): bool
        +filePath(): const QString &
        +deleteLater(): void
    }
    class QLocale {
        +system(): QLocale
        +uiLanguages(): QStringList
    }
    class DPluginMetaData {
        +pluginDir(): QString
        +pluginId(): QString
    }
    class qApp {
      +installTranslator(QTranslator*): void
    }

    DAppletLoaderPrivate "1" o-- "*" QTranslator : stores
    DAppletLoaderPrivate ..> QTranslator : uses
    DAppletLoaderPrivate ..> QLocale : uses
    DAppletLoaderPrivate ..> DPluginMetaData : uses
    DAppletLoaderPrivate ..> qApp : uses
Loading

File-Level Changes

Change Details Files
Refactored translation loading to utilize QTranslator::load overload with locale instead of manual file path checks
  • Replaced manual building and existence check of .qm file path
  • Switched to translator->load(QLocale::system(), pluginId, '_', translationDir)
  • Updated success log to use translator->filePath()
  • Enhanced failure log to include translation directory, plugin id, and system locales
shell/appletloader.cpp

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @BLumia - I've reviewed your changes and they look great!

Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: BLumia, robertkill

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@BLumia BLumia merged commit 5723329 into linuxdeepin:master May 30, 2025
7 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants