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í
×

dnes 12:00 | Nová verze

Po cca 3 týdnech od vydání Linux Mintu 18.3 s kódovým jménem Sylvia a prostředími MATE a Cinnamon byla oznámena také vydání s prostředími KDE a Xfce. Podrobnosti v poznámkách k vydání (KDE, Xfce) a v přehledech novinek s náhledy (KDE, Xfce). Linux Mint 18.3 je podporován do roku 2021.

Ladislav Hagara | Komentářů: 0
včera 12:55 | Nová verze

Byla vydána verze 17.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace, které nebyly dosud portovány na KDE Frameworks 5, byly z KDE Aplikací odstraněny.

Ladislav Hagara | Komentářů: 28
včera 03:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Company of Heroes 2 (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
včera 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 6
včera 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
14.12. 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 7
14.12. 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
14.12. 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

Ladislav Hagara | Komentářů: 0
14.12. 18:11 | Nová verze

Byla vydána verze 2.11.0 QEMU (Wikipedie). Přispělo 165 vývojářů. Provedeno bylo více než 2 000 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
14.12. 17:44 | Komunita

Canonical oznámil dostupnost kryptografických balíčků s certifikací FIPS 140-2 úrovně 1 pro Ubuntu 16.04 LTS pro předplatitele podpory Ubuntu Advantage Advanced. Certifikace FIPS (Federal Information Processing Standards) jsou vyžadovány (nejenom) vládními institucemi USA.

Ladislav Hagara | Komentářů: 3
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (76%)
 (14%)
Celkem 998 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    Dotaz: Lokalizace JSON konfiguračních souborů

    Josef Kufner avatar 15.1.2014 13:43 Josef Kufner | skóre: 67
    Lokalizace JSON konfiguračních souborů
    Přečteno: 241×
    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: 67
    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: 67
    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)
    oryctolagus avatar 23.1.2014 16:12 oryctolagus | skóre: 29 | blog: Untitled
    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.
    There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
    Josef Kufner avatar 23.1.2014 19:02 Josef Kufner | skóre: 67
    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.