• duvy90

    (@duvy90)


    Sziasztok,

    a kérésemmel együtt megoldást is hoztam a Translatepress támogatásra, wpml elég régi és nehézkes többnyelvűsíteni.

    Amit kérnék (és a lentebbi kóddal megcsináltam):
    – A számlát dinamikusan arra a nyelvre állítsa, ami a customer kiválasztott nyelve
    – A Stringeket a kódból, ha van nyelvi fájl szintén erre a nyelvre állítsa. (Manuális számlageneráláskor se az admin nyelvét, hanem a customer nyelvét használja, amin fizetett)

    Ehhez csak egy fájlba kell belenyúlni:
    /plugins/billingo/src/WooCommerce/Service/Billingo_Document_Generator.php

    Kell egy új function:

    private function setLanguageFromOrder(): void
    {
    $trpLanguage = $this->order->get_meta('trp_language', true);
    // Translatepress Plugin
    if (!empty($trpLanguage)) {
    $langCode = strtolower(explode('_', $trpLanguage)[0]);
    if (LanguageEnum::tryFrom($langCode)) {
    $this->language = LanguageEnum::from($langCode);
    switch_to_locale($trpLanguage); // Switch to TRP locale (e.g. de_DE)
    return;
    }
    }
    // wpml plugin or fallback to wc_billingo_invoice_lang
    $fallback = wcFlexibleIsTrue(get_option('wc_billingo_invoice_lang_wpml'))
    && !empty(get_post_meta($this->order->get_id(), 'wpml_order_language', true))
    ? get_post_meta($this->order->get_id(), 'wpml_order_language', true)
    : get_option('wc_billingo_invoice_lang');

    $this->language = LanguageEnum::tryFrom(strtolower($fallback)) ?? LanguageEnum::HU;
    }

    Kell egy új property a class-ba:

    private ?LanguageEnum $language = null;

    Constructorba meghívni:

    $this->setLanguageFromOrder();

    Illetve collectDocumentData()-ba csak használni a beállított értéket:

    private function collectDocumentData(): void
    {
    $paymentMethod = $this->resolvePaymentMethod();
    $paidType = $this->resolvePaidType();
    Billingo_Logger::info('Payment Currency: ' . $this->order->get_currency());

    $deadline = isset($this->manualIncome['deadline'])
    ? (int)$this->manualIncome['deadline']
    : (int)get_option("wc_billingo_paymentdue_{$this->order->get_payment_method()}");

    language = $this->language->value;

    $currency = $this->order->get_currency() ?: 'HUF';

    Ha a Billingo esetleg official beletenné a feature-t, az eredeti fallback ágon is érdemes lennie a WordPress-es “switch_to_locale()” -et meghívni, hogy a pluginba szereplő stringeket ha valaki lefordította, azok ne az admin nyelvén, hanem a customer nyelvén jelenjenek meg. (Pl: “Kupok kedvezmény”)

    Még max egy külön Admin option-t érdemes lehet adni neki, hogy kapcsolható lehessen, de arra már nekem nem volt szükségem.

    • This topic was modified 8 months ago by duvy90.
    • This topic was modified 8 months ago by duvy90.
Viewing 1 replies (of 1 total)
  • Plugin Author billingo

    (@billingo)

    Kedves duvy90!

    Köszönjük az észrevételt dolgozunk rajta. A nyelvesítés refaktorálása folyamatban van. A következő verzió már tartalmazni fogja.

    Billingo csapata

Viewing 1 replies (of 1 total)

The topic ‘Translatepress Support → Kóddal itt’ is closed to new replies.