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 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 0
včera 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
včera 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 7
včera 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 4
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 31
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 3
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 57
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 670 hlasů
 Komentářů: 53, poslední včera 18:38
Rozcestník
Reklama

Dotaz: Lokalizace JSON konfiguračních souborů

Josef Kufner avatar 15.1.2014 13:43 Josef Kufner | skóre: 66
Lokalizace JSON konfiguračních souborů
Přečteno: 235×
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: 66
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: 66
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)
kralуk avatar 23.1.2014 16:12 kralуk | 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.
Shell v kostce: echo -e "\e[1;2r\e[?2l" | Java v kostce | Haskell v kostce
Josef Kufner avatar 23.1.2014 19:02 Josef Kufner | skóre: 66
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.