abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:33 | Nová verze

    Svobodná historická realtimová strategie 0 A.D. (Wikipedie) byla vydána ve verzi 28 (0.28.0). Její kódový název je Boiorix. Představení novinek v poznámkách k vydání. Ke stažení také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní byl vydán ve verzi 1.6.0 (Bluesky). Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.2 a 20.04 OTA-12.

    Ladislav Hagara | Komentářů: 0
    19.2. 18:00 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.0 otevřeného operačního systému pro chytré hodinky AsteroidOS (Wikipedie). Přehled novinek v oznámení o vydání a na YouTube.

    Ladislav Hagara | Komentářů: 1
    19.2. 16:00 | Zajímavý software

    WoWee je open-source klient pro MMORPG hru World of Warcraft, kompatibilní se základní verzí a rozšířeními The Burning Crusade a Wrath of the Lich King. Klient je napsaný v C++ a využívá vlastní OpenGL renderer, pro provoz vyžaduje modely, grafiku, hudbu, zvuky a další assety z originální kopie hry od Blizzardu. Zdrojový kód je na GitHubu, dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 6
    19.2. 13:33 | IT novinky

    Byl představen ICT Supply Chain Security Toolbox, společný nezávazný rámec EU pro posuzování a snižování kybernetických bezpečnostních rizik v ICT dodavatelských řetězcích. Toolbox identifikuje možné rizikové scénáře ovlivňující ICT dodavatelské řetězce a na jejich podkladě nabízí koordinovaná doporučení k hodnocení a mitigaci rizik. Doporučení se dotýkají mj. podpory multi-vendor strategií a snižování závislostí na vysoce

    … více »
    Ladislav Hagara | Komentářů: 4
    19.2. 12:22 | Humor

    Nizozemský ministr obrany Gijs Tuinman prohlásil, že je možné stíhací letouny F-35 'jailbreaknout stejně jako iPhony', tedy upravit jejich software bez souhlasu USA nebo spolupráce s výrobcem Lockheed Martin. Tento výrok zazněl v rozhovoru na BNR Nieuwsradio, kde Tuinman naznačil, že evropské země by mohly potřebovat větší nezávislost na americké technologii. Jak by bylo jailbreak možné technicky provést pan ministr nijak nespecifikoval, nicméně je známé, že izraelské letectvo ve svých modifikovaných stíhačkách F-35 používá vlastní software.

    NUKE GAZA! 🎆 | Komentářů: 35
    19.2. 06:00 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 162 (pdf).

    Ladislav Hagara | Komentářů: 0
    19.2. 05:55 | IT novinky

    Sdružení CZ.NIC, správce české národní domény, zveřejnilo Domain Report za rok 2025 s klíčovými daty o vývoji domény .CZ. Na konci roku 2025 bylo v registru české národní domény celkem 1 515 860 s koncovkou .CZ. Průměrně bylo měsíčně zaregistrováno 16 222 domén, přičemž nejvíce registrací proběhlo v lednu (18 722) a nejméně pak v červnu (14 559). Podíl domén zabezpečených pomocí technologie DNSSEC se po několika letech stagnace výrazně

    … více »
    Ladislav Hagara | Komentářů: 9
    18.2. 18:33 | IT novinky

    Google představil telefon Pixel 10a. S funkci Satelitní SOS, která vás spojí se záchrannými složkami i v místech bez signálu Wi-Fi nebo mobilní sítě. Cena telefonu je od 13 290 Kč.

    Ladislav Hagara | Komentářů: 14
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (26%)
    Celkem 918 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Lokalizace JSON konfiguračních souborů

    Josef Kufner avatar 15.1.2014 13:43 Josef Kufner | skóre: 70
    Lokalizace JSON konfiguračních souborů
    Přečteno: 387×
    Dobré ráno,

    mám konfiguraci uloženou v JSON souborech a chci přidat možnost překladu v ní vyskytujících se řetězců.

    Napadá vás něco lepšího než je toto?
    {
      "name": {
        "cs_CZ": "Název pluginu",
        "en_GB": "Plugin name"
      },
      "found-msg": {
        "cs_CZ": [
          "Nalezena %d položka.",
          "Nalezeny %d položky.",
          "Nalezeno %d položek."
        ],
        "en_GB": [
          "Found %d item.",
          "Found %d items."
        ]
      }
      "sql-table": "Items",
      "entity-class": "\\Plugin\\Items",
      "some-numbers": [ 123, 45, 67, 89, 10 ]
    }
    
    Přemýšlím, jak JSON konfiguráky provázat s gettextem a umožnit nějak kultivovaně hledat, co bylo přeloženo a co ještě nikoliv. Zádrhel je v tom, že něco přeloženo má být ("name", "found-msg"), ale spousta věcí být přeložena nesmí ("sql-table", "entity-class"). Přitom to jsou v podstatě uživatelská data editovaná z administračního rozhraní, takže to nesmí být provázané s gettextem příliš...
    Hello world ! Segmentation fault (core dumped)

    Odpovědi

    16.1.2014 23:30 michi
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    Ten formát není vůbec šťastnej.

    Nejjednodušší, co mě napadá, je dát si přeložitelný řetězce/položky do jedné další velké dictionary s jménem např. "translatable": { } a nad tím pracovat v nějakým „chytřejším“ jazyce, co umí (de)serializovat JSON text a pracovat s tím civilizovaně objektově – na straně klienta třeba JavaScript, na serveru si představím třeba Ruby. Samozřejmě to vůbec nemusí pasovat do tvé use-case, ale to by chtělo asi hlubší popis problému a prostředí.
    Josef Kufner avatar 17.1.2014 00:14 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    Myslíš něco jako toto?

    config.json:
    {
      "name": "$name",
      "found-msg": "$found-msg",
      "sql-table": "Items",
      "entity-class": "\\Plugin\\Items",
      "some-numbers": [ 123, 45, 67, 89, 10 ]
    }
    config.en_GB.json:
    {
      "info": {
        // metadata o prekladu
      },
      "strings": {
        "$name": "Plugin name",
        "$found-msg": [
          "Found %d item.",
          "Found %d items."
        ]
      }
    }
    config.cs_CZ.json:
    {
      "info": {
      },
      "strings": {
        "$name": "Název pluginu",
        "$found-msg": [
          "Nalezena %d položka.",
          "Nalezeny %d položky.",
          "Nalezeno %d položek."
        ]
      }
    }
    Hello world ! Segmentation fault (core dumped)
    17.1.2014 07:04 michi
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    Nene, spíš toto :)
    {
      "languages": [
        "en_GB",
        "cs_CZ"
      ],
      "strings": {
        "name": {
          "cs_CZ": "Název pluginu",
          "en_GB": "Plugin name"
        },
        "found-msg": {
          "cs_CZ": [
            "Nalezena %d položka.",
            "Nalezeny %d položky.",
            "Nalezeno %d položek."
          ],
          "en_GB": [
            "Found %d item.",
            "Found %d items."
          ]
        }
      },
      "sql-table": "Items",
      "entity-class": "\\Plugin\\Items",
      "some-numbers": [ 123, 45, 67, 89, 10 ]
    }
    
    Je to v podstatě tvůj původní formát, jen vede přeložitelné řetězce izolovaně v jednom objektu, kde je objektově dobře najdeš. Odtud je něčím, co rozumí JSON syntaxi, můžeš vytáhnout do objektů a zpracovávat po jednom jak je potřeba, aniž by ses dostal na atributy, na který se nešahá. Rozdělovat to na víc souborů ani práce s čistě find/replace toolem není asi na tohle moc ideální, ale jak jsem psal, využitelnost závisí na případu použití.
    17.1.2014 08:15 Filip Jirsák
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    To je nevýhoda JSONu, že je to hromada dat prakticky bez struktury. Použil bych XML, elementy s texty, které se mají překládat, by měly atribut xml:lang. Třeba takhle, samozřejmě to jde strukturovat i více nebo méně:
    <config>
      <name xml:lang="cs_CZ">Název pluginu</name>
      <name xml:lang="en_GB">Plugin name</name>
      <found-msg xml:lang="cs_CZ" lower-bound="1" upper-bound="1">Nalezena %d položka.</found-msg>
      <found-msg xml:lang="cs_CZ" lower-bound="2" upper-bound="4">Nalezeny %d položky.</found-msg>
      <found-msg xml:lang="cs_CZ" lower-bound="5">Nalezeno %d položek.</found-msg>
      <found-msg xml:lang="en_GB" lower-bound="1" upper-bound="1">Found %d item.</found-msg>
      <found-msg xml:lang="en_GB" lower-bound="2">Found %d items.</found-msg>
      <sql-table>Items</sql-table>
      <entity-class>\Plugin\Items</entity-class>
      <some-numbers>123</some-numbers>
      <some-numbers>45</some-numbers>
      <some-numbers>67</some-numbers>
      <some-numbers>89</some-numbers>
      <some-numbers>10</some-numbers>
    </config>
    
    Josef Kufner avatar 17.1.2014 20:06 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    To by šlo, vlastně to je celkem i pěkné (na XML). A Androidí aplikace dělají něco podobného (překlady mají bokem, ale odkazují atributem a hodnota pak je prázdná).

    Jenže zavedením XML namísto JSON bych si značně zkomplikoval život v mnoha jiných ohledech mimo překladů a ztratil hodně výkonu. Ono se mi tam jinak JSON velice hodí, jen jsem narazil na takový malý háček...
    Hello world ! Segmentation fault (core dumped)
    23.1.2014 16:12 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    Tak ono při vhodném převedení xml atributů na json položky jsou XML a JSON v podstatě isomorfní, takže je celkem jedno, který z formátu použiješ (v podstatě to je osobní preference). Jestli už používáš json, udělal bych jak píše michi výše.
    Josef Kufner avatar 23.1.2014 19:02 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Lokalizace JSON konfiguračních souborů
    To jo, jenže u některých formátů pak můžu tvrdě narazit na některé jejich skryté nedostatky a tou dobou už se formát bude měnit těžko. Tak sháním, kdo si už ten nos nabil :-)
    Hello world ! Segmentation fault (core dumped)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.