From f3258d5c30dcf299a6dcf510880ea87a33be2a0b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 23 Aug 2013 10:34:49 -0700 Subject: [PATCH 1/3] Import translations. DO NOT MERGE Change-Id: Iac566ca061249237c92b941505b2acb8e85208ba Auto-generated-cl: translation import --- java/res/values-et-rEE/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-hy-rAM/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-ka-rGE/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-km-rKH/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-lo-rLA/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-ms-rMY/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-ne-rNP/strings.xml | 242 +++++++++++++++++++++++++++++ java/res/values-si-rLK/strings.xml | 242 +++++++++++++++++++++++++++++ 8 files changed, 1936 insertions(+) create mode 100644 java/res/values-et-rEE/strings.xml create mode 100644 java/res/values-hy-rAM/strings.xml create mode 100644 java/res/values-ka-rGE/strings.xml create mode 100644 java/res/values-km-rKH/strings.xml create mode 100644 java/res/values-lo-rLA/strings.xml create mode 100644 java/res/values-ms-rMY/strings.xml create mode 100644 java/res/values-ne-rNP/strings.xml create mode 100644 java/res/values-si-rLK/strings.xml diff --git a/java/res/values-et-rEE/strings.xml b/java/res/values-et-rEE/strings.xml new file mode 100644 index 000000000..9b9c93a7b --- /dev/null +++ b/java/res/values-et-rEE/strings.xml @@ -0,0 +1,242 @@ + + + + + "Sisestusvalikud" + "Uuringulogi käsud" + "Kontakti nimede kontroll." + "Õigekirjakontroll kasutab teie kontaktisikute loendi sissekandeid" + "Vibreeri klahvivajutusel" + "Heli klahvivajutusel" + "Klahvivajutusel kuva hüpik" + "Üldine" + "Teksti parandamine" + "Joonistusega sisestamine" + "Muud valikud" + "Täpsemad seaded" + "Valikud ekspertidele" + "Vaheta sisestusmeetodit" + "Keelevahetuse võti hõlmab ka muid sisestusmeetodeid" + "Keelevahetuse nupp" + "Kuva, kui lubatud on mitu sisendkeelt" + "Kuva lohistamisnäidik" + "Tõstu- või sümboliklahvidelt lohistades anna visuaalselt märku" + "Hüpiku loobumisviivitus" + "Viivituseta" + "Vaikeseade" + "%s ms" + "Süsteemi vaikeväärt." + "Soovita kontaktkirjeid" + "Kasuta soovitusteks ja parandusteks nimesid kontaktiloendist" + "Punkt tühikuklahviga" + "Tühikuklahvi kaks korda puudutades sisestatakse punkt ja tühik" + "Automaatne suurtähtede kasutamine" + "Iga lause esimese sõna kirjutamine suure algustähega" + "Isiklik sõnastik" + "Pistiksõnaraamatud" + "Peamine sõnaraamat" + "Kuva parandussoovitusi" + "Kuva sisestamise ajal sõnasoovitusi" + "Kuva alati" + "Kuva vertikaalrežiimis" + "Peida alati" + "Blokeeri solvavad sõnad" + "Ära soovita potentsiaals. solvavaid sõnu" + "Automaatparandus" + "Tühik ja kirjavahemärgid parand. autom. kirjavigadega sõnad" + "Väljas" + "Mõõdukas" + "Agressiivne" + "Väga agressiivne" + "Järgmise sõna soovitused" + "Soovituste tegemisel eelmise sõna kasutamine" + "Luba joonistusega sisestamine" + "Sõna sisestamine tähtede lohistamisega" + "Näita liigutuse jälge" + "Dünaamiline ujuv eelvaade" + "Soovitatud sõna vaatamine joonistusega sisestamise ajal" + "%s : salvestatud" + "Mine" + "Edasi" + "Eelm." + "Valmis" + "Saada" + "Peata" + "Oota" + "Ühendage peakomplekt, et kuulata paroole." + "Praegune tekst on %s" + "Teksti ei ole sisestatud" + "Klahvi kood: %d" + "Tõstuklahv" + "Tõstuklahv sees (puudutage keelamiseks)" + "Suurtähelukk on sees (puudutage keelamiseks)" + "Kustuta" + "Sümbolid" + "Tähed" + "Numbrid" + "Seaded" + "Tabulaator" + "Tühik" + "Kõnesisend" + "Naerunägu" + "Tagasi" + "Otsing" + "Punkt" + "Keele vahetamine" + "Järgmine" + "Eelmine" + "Tõstuklahv on lubatud" + "Suurtähelukk on lubatud" + "Tõstuklahv on keelatud" + "Sümbolite režiim" + "Tähtede režiim" + "Telefonirežiim" + "Telefoni sümbolite režiim" + "Klaviatuur on peidetud" + "Näitab klaviatuuri režiimil %s" + "kuupäev" + "kuupäev ja kellaaeg" + "e-post" + "sõnumiside" + "number" + "telefon" + "tekst" + "aeg" + "URL" + "Häälesisendi klahv" + "Peamisel klaviatuuril" + "Sümbol. klaviatuuril" + "Väljas" + "Mikr. peam. klaviat." + "Mikr. sümb. klaviat." + "Kõnesisend on keelatud" + "Sisestusmeetodite seadistamine" + "Sisestuskeeled" + "Saatke tagasisidet" + "Sisestuskeeled" + "Salvestamiseks puudutage uuesti" + "Sõnastik saadaval" + "Luba kasutaja tagasiside" + "Aidake seda sisestusmeetodi redigeerijat parandada, saates automaatselt kasutusstatistikat ja krahhiaruandeid." + "Klaviatuuri teema" + "Inglise (UK)" + "Inglise (USA)" + "hispaania (USA)" + "Inglise (UK) (%s)" + "Inglise (USA) (%s)" + "hispaania (USA) (%s)" + "Keel puudub (tähestik)" + "Tähestik (QWERTY)" + "Tähestik (QWERTZ)" + "Tähestik (AZERTY)" + "Tähestik (Dvorak)" + "Tähestik (Colemak)" + "Tähestik (PC)" + "Kohandage sisendlaadid" + "Lisage laad" + "Lisa" + "Eemalda" + "Salvesta" + "Keel" + "Paigutus" + "Kohandatud sisendi laad tuleb enne kasutamist lubada. Lubada?" + "Luba" + "Mitte kohe" + "Sama sisendstiil on juba olemas: %s" + "Kasutatavuse uurimisrežiim" + "Pika klahvivajutuse viide" + "Klahvivajutuse vibreerimise kestus" + "Klahvivajutuse helitugevus" + "Välise sõnastikufaili lugemine" + "Kaustas Allalaadimised pole ühtegi sõnastikufaili" + "Installitava sõnastikufaili valimine" + "Kas soovite tõesti installida faili lokaadile %s?" + "Ilmnes viga" + "Vaikeväärtus" + "Tere tulemast rakendusse %s" + "joonistusega sisestamisega" + "Alustamine" + "Järgmine toiming" + "Rakenduse %s seadistamine" + "Lubage %s" + "Märkige oma keele ja sisestamise seadetes rakendus „%s”. See lubab rakenduse käitamise teie seadmes." + "%s on teie keele- ja sisestusseadetes juba lubatud, seega on see toiming tehtud. Asuge järgmise toimingu juurde." + "Luba seadetes" + "Minge üle rakendusele %s" + "Järgmisena valige aktiivseks tekstisisestusmeetodiks rakendus „%s”." + "Vaheta sisestusmeetodeid" + "Õnnitleme. Kõik on valmis!" + "Nüüd saate rakendusega %s sisestada kõikides oma lemmikrakendustes." + "Seadista lisakeeled" + "Lõpetatud" + "Kuva rakenduse ikoon" + "Rakenduse ikooni kuvamine käivitajas" + "Sõnastikupakkuja" + "Sõnastikupakkuja" + "Sõnastikuteenus" + "Sõnastiku värskendamisteave" + "Pistiksõnastikud" + "Sõnastik on saadaval" + "Sõnastike seaded" + "Kasutaja sõnastikud" + "Kasutaja sõnastik" + "Sõnastik on saadaval" + "Praegu allalaadimisel" + "Installitud" + "Installitud, keelatud" + "Probleem sõnastikuga ühendumisel" + "Sõnastikke pole" + "Värskenda" + "Viimati värskendatud" + "Värskenduste otsimine" + "Laadimine ..." + "Peamine sõnastik" + "Tühista" + "Installi" + "Tühista" + "Kustuta" + "Mobiilseadmes valitud keelele on saadaval sõnastik.<br/> Teksti mugavamaks sisestamiseks soovitame <b>alla laadida</b> %1$s keele sõnastiku.<br/> <br/> 3G kaudu allalaadimisele võib kuluda minut või paar. Kehtida võivad tasud, kui te ei kasuta <b>piiramatut andmepaketti</b>.<br/> Kui te ei tea, millist andmepaketti kasutate, soovitame allalaadimise automaatseks käivitamiseks leida WiFi-ühenduse.<br/> <br/> Nõuanne: sõnastikke saate alla laadida ja eemaldada, tehes valiku <b>Keel ja sisestamine</b> mobiilseadme menüüs <b>Seaded</b>." + "Laadi kohe alla (%1$.1f MB)" + "Laadi alla WiFi kaudu" + "Sõnastik on %1$s keele jaoks saadaval" + "Vajutage ülevaatamiseks ja allalaadimiseks" + "Allalaadimine: %1$s keele soovitused on varsti saadaval." + "Versioon %1$s" + "Lisa" + "Sõnaraamatusse lisamine" + "Fraas" + "Rohkem valikuid" + "Vähem valikuid" + "OK" + "Sõna:" + "Otsetee:" + "Keel:" + "Sisestage sõna" + "Valikuline otsetee" + "Sõna muutmine" + "Muuda" + "Kustuta" + "Teie kasutaja sõnaraamatus ei ole ühtegi sõna. Sõna saate lisada, puudutades nuppu Lisa (+)." + "Kõikides keeltes" + "Rohkem keeli ..." + "Kustuta" + " ABCDEFGHIJKLMNOPQRSŠZŽTUVWÕÄÖÜXY" + diff --git a/java/res/values-hy-rAM/strings.xml b/java/res/values-hy-rAM/strings.xml new file mode 100644 index 000000000..ec4eb4651 --- /dev/null +++ b/java/res/values-hy-rAM/strings.xml @@ -0,0 +1,242 @@ + + + + + "Ներածման ընտրանքներ" + "Հետազոտական գրառումների հրամաններ" + "Փնտրել կոնտակտային անուններ" + "Տառասխալների ուղղիչն օգտագործում է ձեր կոնտակտների ցանկի տվյալները" + "Թրթռալ սեղմման ժամանակ" + "Ձայնը սեղմման ժամանակ" + "Ելնող պատուհան՝ ստեղնի հպման դեպքում" + "Ընդհանուր" + "Տեքստի ուղղում" + "Ժեստերով մուտքագրում" + "Այլ ընտրանքներ" + "Ընդլայնված կարգավորումներ" + "Ընտրանքներ փորձագետների համար" + "Անցնել մուտքագրման այլ եղանակների" + "Լեզվի փոխարկման բանալին ընդգրկում է այլ մուտքագրման եղանակներ ևս" + "Լեզվի փոխարկման ստեղն" + "Ցույց տալ, երբ մուտքագրման մի քանի լեզուներ են միացված" + "Ցուցադրել սահքի ցուցիչը" + "Ցուցադրել տեսողական հուշումը Shift-ի կամ նշանների ստեղներից սահեցման ընթացքում" + "Ելնող պատուհանի հեռացման հետաձգման ստեղն" + "Առանց հետաձգման" + "Նախնականը" + "%sմվ" + "Համակարգի լռելյայնները" + "Առաջարկել կոնտակտների անունները" + "Օգտագործել կոնտակտների անունները՝ առաջարկների և ուղղումների համար" + "Կրկնաբացակի վերջակետ" + "Բացակի ստեղնի կրկնակի հպումը բացակից հետո վերջակետ է դնում" + "Ավտոմատ գլխատառացում" + "Գլխատառել յուրաքանչյուր նախադասության առաջին բառը" + "Անհատական բառարան" + "Ավելացնել բառարաններ" + "Հիմնական բառարան" + "Ցուցադրել ուղղումների առաջարկներ" + "Ցուցադրել առաջարկվող բառերը մուտքագրման ընթացքում" + "Միշտ ցուցադրել" + "Ցուցադրել դիմանկարային ռեժիմում" + "Միշտ թաքցնել" + "Արգելափակել վիրավորական բառերը" + "Չառաջարկել հավանական վիրավորական բառերը" + "Ինքնուղղում" + "Տպագրական սխալով բառերում ավտոմատ տեղադրել բացակներն ու կետադրական նշանները" + "Անջատված" + "Համեստ" + "Ագրեսիվ" + "Շատ ագրեսիվ" + "Հաջորդ բառի առաջարկներ" + "Առաջարկներ կազմելու համար օգտագործել նախորդ բառը" + "Միացնել ժեստերով մուտքագրումը" + "Մուտքագրեք բառ` սահեցնելով տառերը" + "Ցույց տալ ժեստի հետագիծը" + "Դինամիկ սահող նախատեսք" + "Տեսեք առաջարկված բառը՝ ժեստի միջոցով" + "%s` պահված է" + "Առաջ" + "Հաջորդը" + "Նխրդ" + "Կատարված է" + "Ուղարկել" + "Դադար" + "Սպասել" + "Միացրեք ականջակալը՝ բարձրաձայն արտասանվող գաղտնաբառը լսելու համար:" + "Տվյալ տեքստը %s է" + "Տեքստ չի մուտքագրվել" + "Բանալու կոդը՝ %d" + "Shift" + "Shift-ը միացված է (հպել անջատելու համար)" + "Caps lock-ը միացված է (հպել՝ անջատելու համար)" + "Ջնջել" + "Նշաններ" + "Տառեր" + "Թվեր" + "Կարգավորումներ" + "Tab" + "Բացակ" + "Ձայնային մուտքագրում" + "Ժպիտ" + "Վերադարձ" + "Որոնել" + "Կետ" + "Փոխել լեզուն" + "Հաջորդը" + "Նախորդը" + "Shift-ը միացված է" + "Caps Lock-ը միացված է" + "Shift-ն անջատված է" + "Նշանների ռեժիմ" + "Տառերի ռեժիմ" + "Հեռախոսային ռեժիմ" + "Հեռախոսի նշանների ռեժիմ" + "Ստեղնաշարը թաքցված է" + "Ցուցադրված է %s ստեղնաշարը" + "ամսաթիվ" + "ամսաթիվ և ժամ" + "էլփոստ" + "նամակագրություն" + "թվեր" + "հեռախոսահամար" + "տեքստ" + "ժամանակ" + "URL" + "Ձայնային մուտքագրման ստեղն" + "Հիմնական ստեղնաշարի վրա" + "Նշանների ստեղնաշարի վրա" + "Անջատված" + "Բարձրախոս հիմնական ստեղնաշարի վրա" + "Բարձրախոս նշանների ստեղնաշարի վրա" + "Ձայնային մուտքագրումն անջատված է" + "Կարգավորել մուտքագրման մեթոդները" + "Մուտքագրման լեզուներ" + "Արձագանքել" + "Մուտքագրման լեզուներ" + "Պահպանելու համար կրկին հպեք" + "Բառարանն առկա է" + "Միացնել օգտվողի արձագանքը" + "Օգնել բարելավել այս մուտքագրման եղանակի խմբագրիչը՝ ինքնուրույն ուղարկելով Google-ին օգտագործման վիճակագրությունն ու վթարների հաշվետվությունները:" + "Ստեղնաշարի թեման" + "Անգլերեն (ՄԹ)" + "Անգլերեն (ԱՄՆ)" + "Իսպաներեն (ԱՄՆ)" + "Անգլերեն (ՄԹ) (%s)" + "Անգլերեն (ԱՄՆ) (%s)" + "Իսպաներեն (ԱՄՆ) (%s)" + "Ոչ մի լեզվով (Այբուբեն)" + "Այբուբեն (QWERTY)" + "Այբուբեն (QWERTZ)" + "Այբուբեն (AZERTY)" + "Այբուբեն (Dvorak)" + "Այբուբեն (Colemak)" + "Այբուբեն (PC)" + "Մուտքագրման հատուկ ոճեր" + "Ավելացնել ոճ" + "Ավելացնել" + "Հեռացնել" + "Պահել" + "Lեզու" + "Դասավորություն" + "Մուտքագրման ձեր հատուկ ոճը պետք է միացված լինի նախքան դուք կսկսեք օգտագործել այն: Ցանկանո՞ւմ եք միացնել այն հիմա:" + "Միացնել" + "Ոչ հիմա" + "Մուտքագրման այսպիսի ոճ արդեն գոյություն ունի՝ %s" + "Հարմարավետության ուսումնասիրության ռեժիմ" + "Ստեղնի երկար սեղմման ուշացում" + "Սեղմման թրթռոցի տևողություն" + "Սեղմման ձայնի բարձրությունը" + "Կարդալ արտաքին բառարանի ֆայլը" + "Ներբեռնումների թղթապանակում բառարանային ֆայլեր չկան" + "Ընտրեք բառարանային ֆայլը տեղադրման համար" + "Իրո՞ք ուզում եք տեղադրել այս ֆայլը %s-ում:" + "Տեղի է ունեցել սխալ" + "Լռելյայնը" + "Բարի գալուստ %s" + "Ժեստային մուտքագրմամբ" + "Սկսել" + "Հաջորդ քայլը" + "Տեղադրվում է %s-ը" + "Միացնել %s-ը" + "Խնդրում ենք ստուգել «%s»-ը ձեր Լեզվի & մուտքագրման կարգավորումներում: Դա կլիազորի նրան գործարկվել ձեր սարքում:" + "%s-ն արդեն միացված է ձեր Լեզվի & մուտքագրման կարգավորումներում, ուստի այս քայլն արված է: Անցնել հաջորդին:" + "Միացնել կարգավորումներից" + "Փոխարկել %s-ին" + "Հաջորդիվ, ընտրեք «%s»-ը որպես ձեր ակտիվ տեքստային մուտքագրման եղանակ:" + "Փոխարկել մուտքագրման եղանակները" + "Շնորհավորում ենք, դուք տեղադրեցիք բոլորը:" + "Այժմ դուք կարող եք մուտքագրել ձեր բոլոր սիրելի հավելվածներում %s-ով:" + "Կարգավորել լրացուցիչ լեզուները" + "Ավարտված" + "Ցույց տալ հավելվածի պատկերակը" + "Ցուցադրել հավելվածի պատկերակը թողարկչում" + "Բառարանի մատակարար" + "Բառարանի մատակարար" + "Բառարանի ծառայություն" + "Տեղեկություններ բառարանների թարմացման մասին" + "Ավելացնել բառարաններ" + "Բառարանն առկա է" + "Բառարանների կարգավորումներ" + "Օգտվողի բառարաններ" + "Օգտվողի բառարան" + "Բառարանն առկա է" + "Այս պահին ներբեռնվում է" + "Տեղադրված է" + "Տեղադրված է, անջատված է" + "Բառարանային ծառայությանը միացման խնդիր կա" + "Բառարաններ չկան" + "Թարմացնել" + "Վերջին անգամ թարմացվել է" + "Ստուգվում է թարմացումների առկայությունը" + "Բեռնվում է..." + "Հիմնական բառարան" + "Չեղարկել" + "Տեղադրել" + "Չեղարկել" + "Ջնջել" + "Ձեր բջջային սարքում ընտրված լեզվով առկա է բառարան:
Խորհուրդ ենք տալիս <b>ներբեռնել</b> %1$s բառարանը ձեր մուտքագրման հմտությունների բարելավման համար:<br/> <br/> Ներբեռնումը կարող է խլել մեկ կամ երկու րոպե 3G-ի դեպքում: Հնարավոր է գանձում կատարվի, եթե դուք չունեք <b>տվյալների անսահմանափակ փաթեթ</b>.<br/> Եթե դուք վստահ չեք, թե տվյալների որ փաթեթն ունեք, խորհուրդ ենք տալիս գտնել Wi-Fi կապ՝ ներբեռնումն ավտոմատ սկսելու համար:<br/> <br/> Հուշում. դուք կարող եք ներբեռնել և հեռացնել բառարաններ՝ գնալով ձեր բջջային սարքի <b>Կարգավորումներ ցանկի Լեզու & մուտքագրման</b> բաժինը:"
+ "Ներբեռնել հիմա (%1$.1fՄբ)" + "Ներբեռնել Wi-Fi-ով" + "%1$s-ով առկա է մի բառարան" + "Սեղմեք՝ վերանայելու և ներբեռնելու համար" + "Ներբեռնվում է. %1$s-ի համար առաջարկները շուտով պատրաստ կլինեն:" + "Տարբերակ %1$s" + "Ավելացնել" + "Ավելացնել բառարանում" + "Արտահայտություն" + "Այլ ընտրանքներ" + "Սակավ ընտրանքներ" + "Լավ" + "Բառը՝" + "Դյուրանցումը՝" + "Lեզուն՝" + "Մուտքագրեք բառը" + "Ընտրովի դյուրանցում" + "Խմբագրել բառը" + "Խմբագրել" + "Ջնջել" + "Դուք չունեք ոչ մի բառ օգտվողի բառարանում: Ավելացնել բառեր՝ հպելով Ավելացնել (+) կոճակը:" + "Բոլոր լեզուներով" + "Ավելի շատ լեզուներով..." + "Ջնջել" + " ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՈՒՓՔԵւՕՖ" +
diff --git a/java/res/values-ka-rGE/strings.xml b/java/res/values-ka-rGE/strings.xml new file mode 100644 index 000000000..211e92328 --- /dev/null +++ b/java/res/values-ka-rGE/strings.xml @@ -0,0 +1,242 @@ + + + + + "შეყვანის მეთოდები" + "კვლევის აღრიცხვის ბრძანებები" + "კონტაქტების სახელების მოძიება" + "მართლწერის შემმოწმებელი ერთეულებს თქვენი კონტაქტების სიიდან იყენებს" + "ვიბრაცია კლავიშზე დაჭერისას" + "ხმაური კლავიშზე დაჭერისას" + "გადიდება ღილაკზე დაჭერისას" + "ზოგადი" + "ტექსტის კორექცია" + "ჟესტებით წერა" + "სხვა პარამეტრები" + "გაფართუებული პარამეტრები" + "პარამეტრები ექსპერტთათვის" + "შეყვანის სხვა მეთოდებზე გადართვა" + "ენის გადართვის ღილაკს შეყვანის სხვა მეთოდებსაც შეიცავს" + "ენის გადართვის კლავიში" + "აჩვენე, როდესაც ჩართულია სხვადასხვა შეყვანის ენა" + "გასრიალების ინდიკატ. ჩვენება" + "Shift ან Symbol კლავიშებიდან გასრიალებისას ვიზუალური მინიშნების ჩვენება" + "ამომხტ.კლავიშის დაყოვნება" + "არ დაყოვნდეს" + "ნაგულისხმევი" + "%sმწმ" + "სისტემის ნაგულისხმევი" + "კონტაქტის სახელების შეთავაზება" + "კონტაქტებიდან სახელების გამოყენება შეთავაზებებისთვის და კორექციისთვის" + "წერტილი ორმაგი შორისით" + "შორისზე ორჯერ შეხება დაწერს წერტილს და შორისის სიმბოლოს" + "ავტო-კაპიტალიზაცია" + "ყოველი წინადადების პირველი სიტყვის კაპიტალიზაცია" + "პერსონალური ლექსიკონი" + "დამატებითი ლექსიკონები" + "მთავარი ლექსიკონი" + "კორექციის შეთავაზებების ჩვენება" + "წერისას შეთავაზებული სიტყვების ჩვენება" + "ყოველთვის ჩვენება" + "პორტრეტის რეჟიმში ჩვენება" + "ყოველთვის დამალვა" + "შეურაცხმყოფელი სიტყვების დაბლოკვა" + "არ მოხდეს პოტენციურად შეურაცხმყოფელი სიტყვების შეთავაზება" + "ავტოკორექცია" + "შორისი და პუნქტუაცია ავტომატურად ასწორებს არასწორად აკრეფილ სიტყვებს" + "გამორთულია" + "მოკრძალებული" + "აგრესიული" + "ძალიან აგრესიული" + "შემდეგი სიტყვის შეთავაზებები" + "შეთავაზებებისას წინა სიტყვის გამოყენება" + "ჟესტებით წერის ჩართვა" + "სიტყვის შეყვანა ასო-ნიშებზე გასრიალებით" + "ჟესტიკულაციის კუდის ჩვენება" + "დინამიურად მოლივლივე გადახედვა" + "ჟესტიკულაციისას შეთავაზებული სიტყვის ნახვა" + "%s : შეინახა" + "წასვლ" + "შემდ." + "წინა" + "დასრულდა" + "გაგზ." + "პაუზა" + "მოცდა" + "შეაერთეთ ყურსაცვამი, რათა მოისმინოთ აკრეფილი პაროლის კლავიშების სახელები." + "მიმდინარე ტექსტი არის %s" + "ტექსტ არ შეყვანილა" + "კლავიატურის კოდი %d" + "Shift-" + "Shift ჩართულია (შეეხეთ გამოსართავად)" + "ჩართულია Caps (შეეხეთ გამოსართავად)" + "Delete" + "სიმბოლოები" + "ასოები" + "ნომრები" + "პარამეტრები" + "Tab" + "შორისი" + "ხმოვანი შეყვანა" + "მომღიმარი სახე" + "Return" + "ძიება" + "წერტილი" + "ენის გადართვა" + "შემდეგი" + "წინა" + "Shift ჩართულია" + "Caps lock ჩართულია" + "Shift გამორთულია" + "სიმბოლოების რეჟიმი" + "ასოების რეჟიმი" + "ტელეფონის რეჟიმი" + "ტელეფონის სიმბოლოების რეჟიმი" + "კლავიატურა დამალულია" + "ნაჩვენებია %s კლავიატურა" + "თარიღი" + "თარიღი და დრო" + "ელფოსტა" + "შეტყობინებები" + "რიცხვები" + "ტელეფონი" + "ტექსტი" + "დრო" + "URL" + "ხმოვანი შეყვანის კლავიში" + "მთავარ კლავიატურაზე" + "სიმბოლოთა კლავიატურაზე" + "გამორთულია" + "მიკროფონი მთავარ კლავიატურაზე" + "მიკროფონი სიმბოლოთა კლავიატურაზე" + "ხმოვანი შეყვანა გამორთულია" + "შეყვანის მეთოდების კონფიგურაცია" + "შეყვანის ენები" + "უკუკავშირი" + "შეყვანის ენები" + "შეეხეთ ისევ შესანახად" + "ხელმისაწვდომია ლექსიკონი" + "მომხმარებლის უკუკავშირის ჩართვა" + "შეიტანეთ წვლილი შეყვანის ამ მეთოდის გაუმჯობესებაში და გააგზავნეთ მოხმარების სტატისტიკა ავარიული გათიშვების ანგარიშები" + "კლავიატურის თემა" + "ინგლისური (გართ. სამ.)" + "ინგლისური (აშშ)" + "ესპანური (აშშ)" + "ინგლისური (გაერთ. სამ.) (%s)" + "ინგლისური (აშშ) (%s)" + "ესპანური (აშშ) (%s)" + "ენის გარეშე (ანბანი)" + "ანბანი (QWERTY)" + "ანბანი (QWERTZ)" + "ანბანი (AZERTY)" + "ანბანი (Dvorak)" + "ანბანი (Colemak)" + "ანბანი (PC)" + "შეყვანის სტილების კონფიგურაცია" + "სტილის დამატება" + "დამატება" + "ამოშლა" + "შენახვა" + "ენა" + "განლაგება" + "თქვენი მორგებული შეყვანის სტილი გამოყენებამდე უნდა გაააქტიუროთ. გსურთ მისი აქტივაცია ახლა?" + "ჩართვა" + "ახლა არა" + "შეყვანის იგივე სტილი უკე არსებობს: %s" + "გამოყენებადობის კვლევის რეჟიმი" + "კლავიშზე გრძელი დაჭერის დაყოვნება" + "კლავიშზე დაჭერის ვიბრაციის ხანგრძლივობა" + "კლავიშზე დაჭერის ხმა" + "გარე ლექსიკონის ფაილის წაკითხვა" + "ჩამოტვირთვების საქაღალდეში ლექსიკონის ფაილები არ არის" + "ინსტალაციისათვის აირჩიეთ ლექსიკონის ფაილი" + "ნამდვილად გსურთ ამ ფაილის %s-ისთვის ინსტალაცია?" + "წარმოიშვა შეცდომა" + "ნაგულისხმევი" + "კეთილი იყოს თქვენი მობრძანება %s-ში" + "ჟესტებით წერით" + "დაწყება" + "შემდეგი საფეხური" + "მიმდინარეობს %s-ის დაყენება" + "%s-ის ჩართვა" + "გთხოვთ მონიშნოთ „%s“ თქვენი ენის და შეყვანის პარამეტრებში. ეს უფლებას მიცემს მას გაეშვას თქვენს მოწყობილობაზე." + "%s უკვე გააქტიურებულია თქვენი ენის შეყვანის პარამეტრებში, ასე რომ ეს საფეხური დასრულებულია. გადადით შემდეგ საფეხურზე!" + "პარამეტრებში გააქტიურება" + "გადართეთ %s-ზე" + "შემდეგ, აირჩიეთ „%s“ თქვენს აქტიურ შეყვანის მეთოდად." + "შეყვანის მეთოდების გადართვა" + "გილოცავთ, პრცესი დასრულდა!" + "ამიერიდან შეძლებთ ყველა სასურველ აპში %s-ით წერას." + "დამატებითი ენების კონფიგურაცია" + "დასრულებული" + "აპის ხატულის ჩვენება" + "გაშვების ხატულის ჩვენება გამშვებში" + "ლექსიკონის პროვაიდერი" + "ლექსიკონის პროვაიდერი" + "ლექსიკონს სერვისი" + "ლექსიკონის განახლების მონაცემები" + "დამატებითი ლექსიკონები" + "ხელმისაწვდომია ლექსიკონი" + "ლექსიკონების პარამეტრები" + "მომხმარებლის ლექსიკონები" + "მომხარებლის ლექსიკონი" + "ხელმისაწვდომია ლექსიკონი" + "მიმდინარეობს ჩამოტვირთვა" + "დაყენებულია" + "დაყენებულია, გაუქმებულია" + "ლექსიკონის სერვისთან დაკავშირებით პრობლემა წარმოიშვა" + "ლექსიკონები მიუწვდომელია" + "განახლება" + "ბოლო განახლება" + "მიმდინარეობს განახლებების შემოწმება" + "იტვირთება..." + "მთავარი ლექსიკონი" + "გაუქმება" + "ინსტალაცია" + "გაუქმება" + "წაშლა" + "თქვენს მიერ მობილურ მოწყობილობაზე არჩეული ენისათვის ხელმისაწვდომია ლექსიკონი.<br/> გირჩევთ, <b>ჩამოტვირთოთ</b> %1$s ლექსიკონი, რათა გაიმარტივოთ ტექსტის შეყვანა.<br/> <br/> ჩამოტვირთვას შესაძლოა დაჭირდეს ერთი ან ორი წუთი 3G სისწრაფეზე. თუ ულიმიტო არ გაგაჩნიათ <b> მობილური ინტერნეტის ტარიფი</b>.<br/&gt, შესაძლოა ჩამოტვირთვა დამატებით გადასახადებთან იყოს დაკავშირებული; თუ არ ხართ დარწმუნებული მობილური ინტერნეტის აქტიური ტარიფის შესახებ, გირჩევთ იპოვოთ Wi-Fi კავშირი და ავტომატურად დაიწყოთ ჩამოტვირთვა.<br/> <br/> რჩევა: ლექსიკონების ჩამოტვირთვა და ამოშლა შესაძლებელია სექციიდან <b>ენა და შეყვანა</b> სექციიდან, თქვენი მობილური მოწყობილობის <b>პარამეტრების</b> მენიუში." + "ახლა ჩამოტვირთვა (%1$.1fმბაიტი)" + "Wi-Fi კავშირზე ჩამოტვირთვა" + "%1$s-ისთვის ხელმისაწვდომია ლექსიკონი" + "დააჭირეთ განხილვას და ჩამოტვირთეთ" + "ჩამოტვირთვა: %1$s-ის შემოთავაზებები მალე მომზადდება." + "ვერსია %1$s" + "დამატება" + "ლექსიკონში დამატება" + "ფრაზა" + "მეტი ვარიანტები" + "ნაკლები ვარიანტები" + "კარგი" + "სიტყვა:" + "მალსახმობი:" + "ენა:" + "შიყვანეთ სიტყვა" + "არასავალდებულო მალსახმობი" + "სიტყვის შესწორება" + "რედაქტირება" + "წაშლა" + "თქვენ არ გაქვთ სიტყვები მომხმარებლის ლექსიკონში. დაამატეთ სიტყვები ღილაკ Add (+) შეხებით." + "ყველა ენისთვის" + "სხვა ენები…" + "წაშლა" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml new file mode 100644 index 000000000..03b973885 --- /dev/null +++ b/java/res/values-km-rKH/strings.xml @@ -0,0 +1,242 @@ + + + + + "ជម្រើស​ការ​បញ្ចូល" + "ពាក្យ​បញ្ជា​កំណត់​ហេតុ​​ការ​ស្រាវជ្រាវ" + "រក​មើល​ឈ្មោះ​ទំនាក់ទំនង" + "កម្មវិធី​ពិនិត្យ​អក្ខរាវិរុទ្ធ​ប្រើ​ធាតុ​ពី​​ក្នុង​បញ្ជី​ទំនាក់ទំនង​របស់​អ្នក" + "ញ័រ​នៅ​ពេល​ចុច​គ្រាប់ចុច" + "សំឡេង​នៅ​ពេល​ចុច​គ្រាប់ចុច" + "លេច​ឡើង​នៅ​​ពេល​ចុច​គ្រាប់​ចុច" + "ទូទៅ" + "ការ​កែ​អត្ថបទ" + "វាយ​ដោយ​ប្រើ​កាយវិការ" + "ជម្រើស​ផ្សេងទៀត" + "ការ​កំណត់​កម្រិត​ខ្ពស់" + "ជម្រើស​សម្រាប់​អ្នក​ជំនាញ" + "ប្ដូរ​ទៅ​​​វិធីសាស្ត្រ​បញ្ចូល​​​ផ្សេង​ទៀត" + "គ្រាប់ចុច​ប្ដូរ​ភាសា​តាម​វិធីសាស្ត្រ​បញ្ចូល​ផ្សេងទៀត" + "គ្រាប់​ចុច​ប្ដូរ​​ភាសា" + "បង្ហាញ​នៅ​ពេល​ដែល​បើក​ភាសា​បញ្ចូល​ច្រើន" + "បង្ហាញ​ទ្រនិច​បង្ហាញ​ស្លាយ" + "បង្ហាញ​អត្ថបទ​ដែល​មើល​ឃើញ​ខណៈ​ពេល​ដែល sliding ពី​គ្រាប់ចុច​ប្ដូរ​ឬ​និមិត្ត​សញ្ញា" + "កូនសោ​លេចឡើង​បោះបង់​ការ​​ពន្យារពេល" + "គ្មាន​ការ​ពន្យារពេល" + "លំនាំដើម" + "%sms" + "លំនាំ​ដើម​​​ប្រព័ន្ធ" + "ស្នើ​ឈ្មោះ​ទំនាក់ទំនង" + "ប្រើ​ឈ្មោះ​ពី​ទំនាក់ទំនង​សម្រាប់​ការ​​ស្នើ និង​ការ​កែ" + "រយៈ​ពេល​ចុច space ពីរដង" + "ចុច​ tap ពីរ​​ដង​លើ​ spacebar រយៈ​ពេល​​បញ្ចូល​​​ដែល​បាន​អនុវត្ត​ដោយ​ចុច space" + "ការ​សរសេរ​ជា​អក្សរ​ធំ​​ស្វ័យប្រវត្តិ" + "សរសេរ​ពាក្យ​ដំបូង​​​ជា​អក្សរ​ធំ​​នៃ​ប្រយោគ​នីមួយ" + "វចនានុក្រម​ផ្ទាល់ខ្លួន" + "ផ្នែក​បន្ថែម​វចនានុក្រម" + "វចនានុក្រម​ចម្បង" + "បង្ហាញ​ការ​ស្នើ​ការ​កែ" + "បង្ហាញ​ពាក្យ​ដែល​បាន​​ផ្ដល់​យោបល់​ខណៈ​ពេល​​​វាយ​បញ្ចូល" + "បង្ហាញ​ជា​និច្ច" + "បង្ហាញ​នៅ​ក្នុង​របៀប​បញ្ឈរ" + "លាក់​ជានិច្ច" + "ប្លុក​ពាក្យ​ប្រមាថ​មើលងាយ" + "កុំ​ស្នើ​ឲ្យ​ពាក្យ​ប្រមាថ​មើលងាយ​មាន​សក្ដានុពល" + "ការ​កែ​​​ស្វ័យប្រវត្តិ" + "Spacebar ​និង​សញ្ញា​​វណ្ណយុត្ត​កែ​ពាក្យ​ដែល​បាន​វាយ​ខុស​ស្វ័យប្រវត្តិ" + "បិទ" + "តិចតួច" + "បំពាន" + "បំពាន​ខ្លាំង" + "ការ​ស្នើ​ពាក្យ​បន្ទាប់" + "ប្រើ​ពាក្យ​មុន​​នៅ​ពេល​ធ្វើ​ការ​​​ស្នើ" + "បើក​ការ​​បញ្ចូល​​កាយវិការ" + "បញ្ចូល​ពាក្យ​ដោយ​អនុវត្ត​​តាម​​អក្សរ" + "បង្ហាញ​ដាន​កាយវិការ" + "មើល​ការ​​អណ្ដែត​ដែល​មាន​ចលនា" + "​មើល​ពាក្យ​​​ដែល​បាន​ស្នើ​​​ខណៈ​ពេល​កំពុង​ធ្វើ​កាយ​វិការ" + "%s : បាន​រក្សាទុក" + "ទៅ" + "បន្ទាប់" + "មុន" + "រួចរាល់" + "ផ្ញើ" + "ផ្អាក" + "រង់ចាំ" + "ដោត​កាស ដើម្បី​ស្ដាប់​ពាក្យ​សម្ងាត់។" + "អត្ថបទ​បច្ចុប្បន្ន​គឺ %s" + "គ្មាន​អត្ថបទ​ដែល​បាន​បញ្ចូល" + "កូដ​គ្រាប់​ចុច %d" + "Shift" + "បើក Shift (ចុច tap ដើម្បី​បិទ)" + "បើក Caps lock (ចុច​ tap ដើម្បី​បិទ)" + "Delete" + "និមិត្ត​សញ្ញា" + "Letters" + "លេខ" + "ការ​កំណត់" + "Tab" + "Space" + "ការ​បញ្ចូល​សំឡេង" + "មុខ​ញញឹម" + "Return" + "ស្វែងរក" + "Dot" + "ប្ដូរ​​ភាសា" + "បន្ទាប់" + "មុន" + "បាន​បើក Shift" + "បាន​បើក Caps lock" + "បាន​បិទ Shift" + "របៀប​និមិត្តសញ្ញា" + "របៀប​អក្សរ" + "របៀប​ទូរស័ព្ទ" + "​របៀប​និមិត្ត​សញ្ញា​ទូរស័ព្ទ" + "បាន​លាក់​ក្ដារចុច" + "បង្ហាញ​ក្ដារ​ចុច %s" + "កាលបរិច្ឆេទ" + "កាល​បរិច្ឆេទ​ និង​ពេល​វេលា" + "អ៊ីមែល" + "ការ​ផ្ញើ​សារ" + "លេខ" + "ទូរស័ព្ទ" + "អត្ថបទ" + "ពេលវេលា" + "URL" + "គ្រាប់​ចុច​បញ្ចូល​​សំឡេង" + "នៅ​លើ​ក្ដារចុច​ចម្បង" + "នៅ​លើ​ក្ដារចុច​​និមិត្ត​សញ្ញា" + "បិទ" + "មីក្រូហ្វូន​នៅ​លើ​​ក្ដារចុច​ចម្បង" + "មីក្រូហ្វូន​នៅ​លើ​​ក្ដារចុច​និមិត្ត​សញ្ញា" + "បាន​បិទ​ការ​បញ្ចូល​សំឡេង" + "កំណត់​រចនាសម្ព័ន្ធ​វិធីសាស្ត្រ​បញ្ចូល" + "បញ្ចូល​ភាសា" + "ផ្ញើ​មតិ​អ្នក​ប្រើ" + "បញ្ចូល​ភាសា" + "ប៉ះ​ម្ដង​ទៀត​ដើម្បី​រក្សា​ទុក" + "មាន​វចនានុក្រម" + "បើក​មតិ​អ្នកប្រើ" + "ជំនួយ​​​ធ្វើ​ឲ្យ​​ប្រសើរ​ឡើង​​នៃ​កម្មវិធី​កែ​​វិធី​សាស្ត្រ​​បញ្ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ដោយ​ការ​ផ្ញើ​ស្ថិតិ​ការ​ប្រើ​ប្រាស់​ ​និង​របាយការណ៍​គាំង" + "រូបរាង​ក្ដារចុច" + "អង់គ្លេស (ចក្រភព​អង់គ្លេស)" + "អង់គ្លេស (សហរដ្ឋ​អាមេរិក)" + "អេស្ប៉ាញ (សហរដ្ឋ​អាមេរិក​)" + "អង់គ្លេស (ចក្រភព​អង់គ្លេស) (%s)" + "អង់គ្លេស (អាមេរិក) (%s)" + "អេស្ប៉ាញ (អាមេរិក​) ( %s )" + "គ្មាន​ភាសា (អក្សរ​ក្រម)" + "អក្សរ​ក្រម (QWERTY)" + "អក្សរ​ក្រម (QWERTZ)" + "អក្សរ​ក្រម (AZERTY)" + "អក្សរ​ក្រម (Dvorak)" + "អក្សរ​ក្រម (Colemak)" + "អក្សរ​ក្រម (កុំព្យូទ័រ)" + "បញ្ចូល​រចនាប័ទ្ម​ផ្ទាល់​ខ្លួន" + "បន្ថែម​រចនាប័ទ្ម" + "បន្ថែម" + "លុប​ចេញ" + "រក្សាទុក" + "ភាសា" + "ប្លង់" + "ចាំបាច់​ត្រូវ​បើក​រចនាប័ទ្ម​បញ្ចូល​ផ្ទាល់​ខ្លួន​របស់​អ្នក មុន​ពេល​អ្នក​ចាប់ផ្ដើម​ប្រើ​វា។ តើ​អ្នក​ចង់​បើក​វា​ឥឡូវ​នេះ​ឬ?" + "បើក" + "មិនមែន​ឥឡូវ" + "បញ្ចូល​រចនាប័ទ្ម​ដូចគ្នា​រួច​ហើយ​: %s" + "របៀប​ការ​សិក្សា​ដែល​អាច​ប្រើ​បាន" + "ពន្យារពេល​​​ចុច​គ្រាប់​ចុច​ឲ្យ​​យូរ" + "​ពេលវេលា​ញ័រ​​ពេល​ចុច​គ្រាប់ចុច" + "កម្រិត​សំឡេង​ពេល​ចុច​គ្រាប់​ចុច" + "អាន​ឯកសារ​វចនានុក្រម​ខាង​ក្រៅ" + "គ្មាន​ឯកសារ​វចនានុក្រម​នៅ​ក្នុង​ថត​ទាញ​យក​ទេ" + "ជ្រើស​ឯកសារ​វចនានុក្រម​ដើម្បី​ដំឡើង" + "ពិត​ជា​ដំឡើង​ឯកសារ​នេះ​សម្រាប់ %s ឬ?" + "មាន​កំហុស" + "លំនាំដើម" + "សូម​ស្វាគមន៍​មក​កាន់ %s" + "ជាមួយ​​​ការ​វាយ​ដោយ​ប្រើ​​​កាយវិការ" + "បាន​ចាប់ផ្ដើម" + "ជំហាន​បន្ទាប់" + "រៀបចំ %s" + "បើក %s" + "សូម​ពិនិត្យមើល \"%s\" នៅ​ក្នុង​ការ​កំណត់​ភាសា & និង​ការ​បញ្ចូល​របស់​អ្នក។ វា​នឹង​ដំណើរការ​នៅ​លើ​ឧបករណ៍​របស់​អ្នក។" + "%s បាន​បើក​នៅ​ក្នុង​​ការ​កំណត់​​ភាសា​ & ការ​បញ្ចូល​របស់ ដូច្នេះ​ជំហាន​នេះ​រួចរាល់​ហើយ។ បន្ត​ទៅ​ជំហាន​បន្ទាប់!" + "បើក​នៅ​ក្នុង​ការ​កំណត់" + "ប្ដូរ​ទៅ %s" + "បន្ទាប់ ជ្រើស \"%s\" ជា​វិធី​សាស្ត្រ​បញ្ចូល​អត្ថបទ​សកម្ម​របស់​អ្នក។" + "ប្ដូរ​វិធីសាស្ត្រ​បញ្ចូល" + "អបអរ​សាទរ​ អ្នក​​បាន​កំណត់​ទាំងអស់​ហើយ!" + "ឥឡូវ​នេះ​អ្នក​អាច​​វាយ​បញ្ចូល​នៅ​ក្នុង​​កម្មវិធី​សំណព្វ​របស់​អ្នក​ទាំងអស់​ជាមួយ %s ។" + "កំណត់​រចនា​សម្ព័ន្ធ​ភាសា​បន្ថែម" + "បាន​បញ្ចប់" + "បង្ហាញ​រូប​តំណាង​កម្មវិធី" + "បង្ហាញ​រូប​តំណាង​កម្មវិធី​នៅ​ក្នុង​កម្ម​​វិធី​ចាប់ផ្ដើម" + "កម្មវិធី​ផ្ដល់​វចនានុក្រម" + "កម្មវិធី​ផ្ដល់​វចនានុក្រម" + "សេវា​វចនានុក្រម" + "ព័ត៌មាន​បច្ចុប្បន្នភាព​វចនានុក្រម" + "ផ្នែក​បន្ថែម​វចនានុក្រម" + "វចនានុក្រម​ដែល​​​អាច​ប្រើ​បាន" + "ការ​កំណត់​សម្រាប់​វចនានុក្រម" + "វចនានុក្រម​​​អ្នក​ប្រើ" + "វចនានុក្រម​អ្នក​ប្រើ" + "វចនានុក្រម​​ដែល​អាច​ប្រើ​បាន" + "បច្ចុប្បន្ន​កំពុង​ទាញយក" + "បាន​ដំឡើង" + "បាន​ដំឡើង បាន​បិទ" + "មាន​បញ្ហា​ក្នុង​ការ​តភ្ជាប់​ទៅ​​សេវា​វចនានុក្រម" + "គ្មាន​វចនានុក្រម" + "ធ្វើ​ឲ្យ​ស្រស់" + "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុងក្រោយ" + "ពិនិត្យមើល​បច្ចុប្បន្នភាព" + "កំពុង​ផ្ទុក..." + "វចនានុក្រម​ចម្បង" + "បោះ​បង់" + "ដំឡើង" + "បោះ​បង់" + "លុប" + "ភាសា​ដែល​បាន​ជ្រើស​នៅ​លើ​ឧបករណ៍​របស់​អ្នក​មាន​វចនានុក្រម។ <br/> យើង​បាន​ផ្ដល់​អនុសាសន៍ <b> ទាញ​យក​ </b> %1$s វចនានុក្រម ដើម្បី​ធ្វើ​ឲ្យ​ការ​វាយ​បញ្ចូល​របស់​អ្នក​ប្រសើរ​ឡើង។ <br/> <br/> ការ​ទាញ​យក​អាច​ចំណាយ​ពេល​​មួយ ឬ​ពីរ​នាទី​​​តាម 3G ។ អាច​អនុវត្ត​ប្រសិនបើ​អ្នក​មិន​​បាន​ <b> កំណត់​ទិន្នន័យ​គ្មាន​ដែន​កំណត់ </b>.<br/> ប្រសិនបើ​​អ្នក​មិន​ប្រាកដ​​ថា​ទិន្នន័យ​អ្នក​​មិន​បាន​​កំណត់ យើង​បាន​ផ្ដល់​អនុសាសន៍​ដោយ​ស្វែងរក​ការ​តភ្ជាប់​​វ៉ាយហ្វាយ ដើម្បី​ចាប់ផ្ដើម​ទាញ​យក​ដោយ​ស្វ័យប្រវត្តិ។<br/> <br/> ព័ត៌មាន​ជំនួយ៖ អ្នក​អាច​ទាញ​យក ហើយ​យក​វចនានុក្រម​ចេញ​ដោយ​ចូល​ទៅ​កាន់ <b> ភាសា & បញ្ចូល </b> នៅ​ក្នុង <b> ការ​កំណត់ </b> ម៉ឺនុយ​របស់​ឧបករណ៍​ចល័ត។" + "ទាញ​យក​ឥឡូវ​នេះ (%1$.1fMB)" + "ទាញ​យក​តាម​វ៉ាយហ្វាយ" + "វចនានុក្រម​​​ដែល​អាច​ប្រើ​បាន​​សម្រាប់ %1$s" + "ចុច​ដើម្បី​ពិនិត្យ​មើល​ឡើង​​វិញ​ និង​ទាញ​យក" + "ទាញ​យក៖ ការ​​ស្នើ %1$s នឹង​បញ្ចប់​ឆាប់ៗ។" + "កំណែ %1$s" + "បន្ថែម" + "បន្ថែម​ទៅ​វចនានុក្រម" + "ឃ្លា" + "ជម្រើស​ច្រើន" + "ជម្រើស​តិច" + "យល់​ព្រម" + "ពាក្យ៖" + "ផ្លូវកាត់​៖" + "ភាសា៖" + "វាយ​បញ្ចូល​ពាក្យ​មួយ" + "ផ្លូវកាត់​ជា​ជម្រើស" + "កែ​ពាក្យ" + "កែ" + "លុប" + "អ្នក​មិន​មាន​ពាក្យ​ណាមួយ​នៅ​ក្នុង​វចនានុក្រម​អ្នក​ប្រើ​ទេ។ បន្ថែម​ពាក្យ​ដោយ​​​​ប៉ះ​ប៊ូតុង​ (+) បន្ថែម។" + "សម្រាប់​ភាសា​ទាំងអស់" + "ភាសា​ច្រើន…" + "លុប" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + diff --git a/java/res/values-lo-rLA/strings.xml b/java/res/values-lo-rLA/strings.xml new file mode 100644 index 000000000..cc15a4226 --- /dev/null +++ b/java/res/values-lo-rLA/strings.xml @@ -0,0 +1,242 @@ + + + + + "ຕົວເລືອກການປ້ອນຂໍ້ມູນ" + "Research Log Commands" + "ເບິ່ງທີ່ຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່" + "ໂຕຊ່ວຍສະກົດໃຊ້ຂໍ້ມູນຈາກລາຍການຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ" + "ການສັ່ນໃນການພິມ" + "ສຽງໃນການກົດປຸ່ມ" + "ໂຕອັກສອນເວລາພິມ" + "ທົ່ວໄປ" + "ໂຕຊ່ວຍແປງຂໍ້ຄວາມ" + "ການພິມແບບ Gesture" + "ໂຕເລືອກ​ອື່ນໆ" + "ການຕັ້ງຄ່າຂັ້ນສູງ" + "ຕົວເລືອກສຳລັບຜູ່ທີ່ຊຳນານ" + "ປ່ຽນໄປໃຊ້ການປ້ອນຂໍ້ມູນແບບອື່ນ" + "ໂຕປ່ຽນພາສາເປັນທັງໂຕປ່ຽນຮູບແບບການປ້ອນຂໍ້ມູນເຊັ່ນກັນ" + "ປຸ່ມປ່ຽນພາສາ" + "ສະແດງໃນເວລາທີ່ຕົວເລືອກການປ້ອນຂໍ້ມູນຫຼາຍໂຕຖືກເປີດຢູ່" + "ສະແດງໂຕບົ່ງບອກການສະໄລ້" + "ສະແດງແນວທາງໃນຂະນະທີ່ສະໄລ້ຈາກ Shift ຫຼື ປຸ່ມເຄື່ອງໝາຍ" + "ໄລຍະເວລາການສະແດງໂຕອັກສອນ" + "ບໍ່ຕ້ອໜ່ວງເວລາ" + "ຄ່າເລີ່ມຕົ້ນ" + "%sms" + "ຄ່າເລີ່ມຕົ້ນຂອງລະບົບ" + "ແນະນຳລາຍຊື່ຜູ່ຕິດຕໍ່" + "ໃຊ້ຊື່ຈາກລາຍຊື່ຜູ່ຕິດຕໍ່ສຳລັບການແນະນຳ ແລະ ການຊ່ວຍແກ້ຄຳ" + "ຍະຫວ່າງສອງເທື່ອເພື່ອໃສ່ຈ້ຳເມັດ" + "ກົດທີ່ປຸ່ມຍະຫວ່າງສອງເທື່ອເພື່ອໃສ່ຈ້ຳເມັດແລ້ວຕາມດ້ວຍການຍະຫວ່າງ" + "ເຮັດໂຕພິມໃຫຍ່ອັດຕະໂນມັດ" + "ເຮັດໂຕພິມໃຫຍ່ໃຫ້ໂຕອັກສອນທຳອິດຂອງແຕ່ລະຄຳໃນປະໂຫຍກ" + "ວັດຈະນານຸກົມສ່ວນໂຕ" + "ໂຕເສີມວັດຈະນານຸກົມ" + "ວັດຈະນານຸກົມຫຼັກ" + "ສະແດງການແນະນຳຄຳທີ່ຖືກຕ້ອງ" + "ສະແດງຄຳສັບທີ່ແນະນຳໃນເວລາທີ່ກຳລັງພິມ" + "ສະແດງຕະຫລອດ" + "ສະແດງໃນໂຫມດແນວຕັ້ງ" + "ເຊື່ອງໄວ້ຕະຫລອດ" + "ປິດກັ້ນຄຳທີ່ບໍ່ສຸພາບ" + "ຫ້າມແນະນຳຄຳທີ່ບໍ່ສຸພາບ" + "ໂຕຊ່ວຍສະກົດຄຳ" + "ການຍະຫວ່າງ ແລະ ການໃສ່ເຄື່ອງໝາຍຈະຖືກປ່ຽນແປງໃຫ້ຖືກຕ້ອງ ໃນຄຳທີ່ພິມຜິດໂດຍອັດຕະໂນມັດ" + "ປິດ" + "ປານກາງ" + "ສູງ" + "ສູງສຸດ" + "ການແນະນຳຄຳຕໍ່ໄປ" + "ໃຊ້ຄຳທີ່ຜ່ານມາໃນການແນະນຳຄຳ" + "ເປີດນຳໃຊ້ການພິມແບບ Gesture" + "ໃສ່ຄຳສັບລົງໄປໂດຍການສະໄລ້ຜ່ານໂຕອັກສອນ" + "ສະແດງຫາງຂອງ Gesture" + "ມີຄຳຕົວຢ່າງລອຍຂຶ້ນມາ" + "ເບິ່ງຄຳທີ່ຖືກແນະນຳໃນເວລາທີ່ກຳລັງຊີ້" + "%s : ບັນທຶກແລ້ວ" + "ໄປ" + "ຕໍ່ໄປ" + "ກ່ອນໜ້າ" + "ແລ້ວໆ" + "ສົ່ງ" + "ຄ້າງໄວ້" + "ລໍຖ້າ" + "ສຽບສາຍຫູຟັງເພື່ອຟັງລະຫັດຜ່ານ." + "ຂໍ້ຄວາມປະຈຸບັນແມ່ນ %s" + "ບໍ່ມີການໃສ່ຂໍ້ຄວາມ" + "ລະຫັດກະແຈ %d" + "Shift" + "Shift ເປີດນຳໃຊ້ຢູ່ (ກົດເພື່ອປິດນຳໃຊ້)" + "Caps lock ເປີດຢູ່ (ກົດເພື່ອປິດນຳໃຊ້)" + "ລຶບ" + "ສັນ​ຍາ​ລັກ" + "ໂຕອັກ​ສອນ" + "ໂຕເລກ" + "ການຕັ້ງຄ່າ" + "ແທັບ" + "ຍະຫວ່າງ" + "ການປ້ອນຂໍ້ມູນດ້ວຍສຽງ" + "ຮອຍຍິ້ມ" + "ກັບຄືນ" + "ຊອກຫາ" + "ຈ້ຳ" + "ສະລັບພາສາ" + "ຕໍ່ໄປ" + "ກ່ອນໜ້າ" + "Shift ເປີດນຳໃຊ້ຢູ່" + "Caps lock ເປີດນຳໃຊ້ຢູ່" + "Shift ປິດນຳໃຊ້ຢູ່" + "ໂຫມດສັນຍາລັກ" + "ໂຫມດ​ໂຕອັກ​ສອນ" + "ໂຫມດໂທລະສັບ" + "ໂຫມດສັນຍາລັກໂທລະສັບ" + "ແປ້ນ​ພິມ​ເຊື່ອງ​ໄວ້" + "ກຳລັງສະແດງແປ້ນພິມ %s" + "ວັນທີ" + "ວັນ​ທີ​ແລະ​ເວ​ລາ" + "ອີເມວ" + "ຂໍ້ຄວາມ" + "ໂຕເລກ" + "ໂທລະສັບ" + "ຂໍ້ຄວາມ" + "ເວລາ" + "URL" + "ປຸ່ມປ້ອນຂໍ້ມູນດ້ວຍສຽງ" + "ແປ້ນພິມຫຼັກ" + "ໃນແປ້ນພິມສັນຍາລັກ" + "ປິດ" + "ໄມໃນແປ້ນພິມຫຼັກ" + "ໄມໃນແປ້ນພິມສັນຍາລັກ" + "ການປ້ອນຂໍ້ມູນດ້ວຍສຽງປິດນຳໃຊ້ຢູ່" + "ຕັ້ງຄ່າຮູບແບບການປ້ອນຂໍ້ມູນ" + "ພາສາການປ້ອນຂໍ້ມູນ" + "ສົ່ງຄຳຕິຊົມ" + "ພາສາການປ້ອນຂໍ້ມູນ" + "ກົດອີກຄັ້ງເພື່ອບັນທຶກ" + "ມີວັດຈະນານຸກົມ" + "ເປີດນຳໃຊ້ຄຳຕິຊົມຈາກຜູ່ໃຊ້" + "ຊ່ວຍເພີ່ມປະສິດທິພາບໂຕແກ້ໄຂການປ້ອນຂໍ້ມູນ ໂດຍການສົ່ງສະຖິຕິການນຳໃຊ້ ແລະການລາຍການຂໍ້ຜິດພາດໂດຍອັດຕະໂນມັດ" + "ສີສັນແປ້ນພິມ" + "ອັງກິດ (UK)" + "ອັງກິດ (ອາເມລິກາ)" + "ສະເປນ (ອາເມລິກາ)" + "ພາສາອັງກິດ (ອັງກິດ) (%s)" + "ອັງກິດ (ອາເມລິກາ) (%s)" + "ແອສປາໂຍນ (ສະ​ຫະ​ລັດ​) (%s)" + "ບໍ່ມີພາສາ (ໂຕອັກສອນ)" + "ໂຕອັກສອນ (QWERTY​)" + "ໂຕອັກສອນ (QWERTZ​)" + "ໂຕອັກສອນ (AZERTY​)" + "ໂຕອັກສອນ (Dvorak​)" + "ໂຕອັກສອນ (Colemak​)" + "ໂຕອັກສອນ (PC)" + "ຮູບແບບການປ້ອນຂໍ້ມູນສ່ວນຕົວ" + "ເພີ່ມຮູບແບບ" + "ເພີ່ມ" + "ລຶບອອກ" + "ບັນທຶກ" + "ພາສາ" + "ຮູບແບບ" + "ຮູບແບບການປ້ອນຂໍ້ມູນແບບສ່ວນຕົວຂອງທ່ານ ຕ້ອງຖືກເປີດນຳໃຊ້ຢູ່ກ່ອນທີ່ທ່ານຈະສາມາດໃຊ້ມັນໄດ້. ທ່ານຕ້ອງການທີ່ຈະເປີດໃຊ້ມັນດຽວນີ້ບໍ່?" + "ເປີດນຳໃຊ້" + "ບໍ່ແມ່ນຕອນນີ້" + "ຮູບແບບການປ້ອນຂໍ້ມູນທີ່ຄືກັນມີຢູ່ແລ້ວ: %s" + "ໂໝດການສຶກສາ Usability" + "ໄລຍະເວລາຂອງການກົດປຸ່ມ" + "ໄລຍະເວລາຂອງການສັ່ນໃນການກົດປຸ່ມ" + "ລະດັບສຽງຂອງການກົດປຸ່ມ" + "ອ່ານໄຟລ໌ວັດຈະນານຸກົມພາຍນອກ" + "ບໍ່ມີໄຟລ໌ວັດຈະນານຸກົມໃນໂຟນເດີຂອງການດາວໂຫລດ" + "ເລືອກໄຟລ໌ວັດຈະນານຸກົມເພື່ອຕິດຕັ້ງ" + "ຕິດຕັ້ງໄຟລ໌ນີ້ສຳລັບ %s ແທ້ບໍ່?" + "ມີຂໍ້ຜິດພາດເກີດຂຶ້ນ" + "ຄ່າເລີ່ມຕົ້ນ" + "ຍິນ​ດີ​ຕ້ອນ​ຮັບສູ່ %s" + "ດ້ວຍການພິມແບບ Gesture" + "ເລີ່ມກັນເລີຍ!" + "ຂັ້ນຕອນຕໍ່ໄປ" + "ຕັ້ງຄ່າ %s" + "ເປີດນຳໃຊ້ %s" + "ກະລຸນາກວດເບິ່ງ \"%s\" ໃນການຕັ້ງຄ່າພາສາ & ການປ້ອນຂໍ້ມູນຂອງທ່ານ. ນີ້ຈະເປັນການອະນຸຍາດໃຫ້ມັນເຮັດວຽກໃນອຸປະກອນຂອງທ່ານ" + "%s ຖືກເປີດນຳໃຊ້ໃນການຕັ້ງຄ່າພາສາ & ການປ້ອນຂໍ້ມູນຂອງທ່ານແລ້ວ, ສະນັ້ນຂັ້ນຕອນນີ້ແມ່ນສຳເລັດໄປແລ້ວ. ໄປທີ່ຂັ້ນຕອນຕໍ່ໄປ!" + "ເປີດນຳໃຊ້ໃນການຕັ້ງຄ່າ" + "ປ່ຽນເປັນ %s" + "ຕໍ່ໄປ, ເລືອກເອົາ \"%s\" ເປັນຮູບແບບການປ້ອນຂໍ້ມູນຂອງທ່ານ." + "ປ່ຽນຮູບແບບການປ້ອນຂໍ້ມູນ" + "ຍິນດີດ້ວຍ, ທ່ານເຮັດແລ້ວໆ!" + "ຕອນນີ້ທ່ານສາມາດພິມໃນແອັບຯທີ່ທ່ານມັກໄດ້ທຸກແອັບຯດ້ວຍ %s." + "ປັບຄ່າພາສາເພີ່ມເຕີມ" + "ສຳເລັດແລ້ວ" + "ສະແດງໄອຄອນຂອງແອັບຯ" + "ສະແດງໄອຄອນຂອງແອັບຯໃນ Launcher" + "ຜູ່​ສະ​ຫນອງ​ວັດຈະ​ນາ​ນຸ​ກົມ" + "ຜູ່​ສະ​ຫນອງ​ວັດຈະ​ນາ​ນຸ​ກົມ" + "ບໍລິການວັດຈະນານຸກົມ" + "ຂໍ້ມູນການອັບເດດວັດຈະນານຸກົມ" + "ໂຕເສີມວັດຈະນານຸກົມ" + "ມີວັດຈະນານຸກົມ" + "ການຕັ້ງຄ່າສຳລັບວັດຈະນານຸກົມ" + "ວັດຈະນານຸກົມຜູ່ໃຊ້" + "ວັດຈະນານຸກົມຜູ່ໃຊ້" + "ມີວັດຈະນານຸກົມ" + "ກຳລັງດາວໂຫລດ" + "ຕິດຕັ້ງແລ້ວ" + "ຕິດຕັ້ງແລ້ວ, ປິດການນຳໃຊ້ແລ້ວ" + "ມີປັນຫາໃນການເຊື່ອມຕໍ່ກັບບໍລິການວັດຈະນານຸກົມ" + "ບໍ່ມີວັດຈະນານຸກົມ" + "ດຶງຂໍ້ມູນໃຫມ່" + "ອັບເດດຫຼ້າສຸດ" + "ກຳລັງກວດການອັບເດດ" + "ກຳລັງໂຫລດ..." + "ວັດຈະນານຸກົມຫຼັກ" + "ຍົກເລີກ" + "ຕິດຕັ້ງ" + "ຍົກເລີກ" + "ລຶບ" + "ພາສາທີ່ທ່ານເລືອກໃຊ້ໃນອຸປະກອນຂອງທ່ານນັ້ນ ມີວັດຈະນານຸກົມໃຫ້ໃຊ້ພ້ອມ.<br/> ພວກເຮົາແນະນຳໃຫ້ <b>ດາວໂຫລດ</b> %1$s ວັດຈະນານຸກົມດັ່ງກ່າວ ເພື່ອເພີ່ມປະສົບການໃນການພິມຂອງທ່ານ.<br/> <br/> ການດາວໂຫລດອາດຈະໃຊ້ເວລາພຽງໜຶ່ງເຖິງສອງນາທີ ໂດຍການໃຊ້ 3G. ທ່ານອາດຈະເສຍຄ່າບໍລິການສຳລັບອິນເຕີເນັດ ຫາກທ່ານບໍ່ມີ <b>ການນຳໃຊ້ອິນເຕີເນັດແບບບໍ່ຈຳກັດ</b>.<br/> ຫາກທ່ານບໍ່ແນ່ໃຈວ່າຮູບແບບການໃຊ້ໃດທີ່ທ່ານມີຢູ່ ພວກເຮົາແນະນຳໃຫ້ຊອກຫາການເຊື່ອມຕໍ່ Wi-Fi ເພື່ອດາວໂຫລດມັນໂດຍອັດຕະໂນມັດ.<br/> <br/> ເຄັດລັບ: ທ່ານສາມາດດາວໂຫລດ ແລະ ລຶບວັດຈະນານຸກົມໄດ້ທີ່ <b>ພາສາ & ການປ້ອນຂໍ້ມູນ</b> ຢູ່ໃນເມນູ <b>ການຕັ້ງຄ່າ</b> ຂອງອຸປະກອນພົກພາຂອງທ່ານ." + "ດາວໂຫລດດຽວນີ້ (%1$.1fMB)" + "ດາວ​ໂຫລດຜ່ານ Wi-Fi" + "ວັດຈະນານຸກົມສາມາດໃຊ້ໄດ້ກັບ %1$s" + "ກົດທີ່ກວດຄືນ ແລະ ດາວໂຫລດ" + "ກຳລັງດາວໂຫລດ: ການແນະນຳສຳລັບ %1$s ແລະມັນຈະພ້ອມນຳໃຊ້ໄວໆນີ້" + "ເວີຊັນ %1$s" + "ເພີ່ມ" + "ເພີ່ມໄປທີ່ວັດຈະນານຸກົມ" + "ປະໂຫຍກ" + "ຕົວເລືອກເພີ່ມເຕີມ" + "ຕົວເລືອກໜ້ອຍລົງ" + "ຕົກລົງ" + "ຄຳສັບ:" + "ທາງລັດ:" + "ພາສາ:" + "ພິມ​ຄໍາ​ສັບ​ໃດ​ນຶ່ງ" + "ໂຕເລືອກທາງລັດ" + "ແກ້ໄຂຄຳ" + "ແກ້ໄຂ" + "ລຶບ" + "ທ່ານບໍ່ມີຄຳສັບໃດໆໃນວັດຈະນານຸກົມຜູ່ໃຊ້ເທື່ອ. ເພີ່ມຄຳສັບໄດ້ໂດຍການສຳພັດທີ່ປຸ່ມ ເພີ່ມ (+)." + "ສໍາ​ລັບ​ທຸກໆ​ພາ​ສາ" + "ພາສາອື່ນໆ..." + "ລຶບ" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml new file mode 100644 index 000000000..df30627aa --- /dev/null +++ b/java/res/values-ms-rMY/strings.xml @@ -0,0 +1,242 @@ + + + + + "Pilihan input" + "Arahan Log Penyelidikan" + "Cari nama kenalan" + "Penyemak ejaan menggunakan entri dari senarai kenalan anda" + "Getar pada tekanan kekunci" + "Bunyi pada tekanan kekunci" + "Pop timbul pada tekanan kunci" + "Umum" + "Pembetulan teks" + "Taipan gerak isyarat" + "Pilihan lain" + "Tetapan terperinci" + "Pilihan untuk pakar" + "Tukar ke kaedah input lain" + "Kunci pertukaran bahasa meliputi kaedah masukan lain juga" + "Kekunci tukar bahasa" + "Tunjukkan apabila berbilang bahasa input didayakan" + "Tunjukkan penunjuk slaid" + "Paparkan petunjuk visual semasa meluncur daripada kekunci Shift atau Simbol" + "Pop tmbl knci ketpkn lengah" + "Tiada lengah" + "Lalai" + "%sms" + "Tetapan asal sistem" + "Cadangkan nama Kenalan" + "Menggunakan nama daripada Kenalan untuk cadangan dan pembetulan" + "Titik ruang berganda" + "Mengetik 2X pada bar ruang memasukkan titik diikuti dengan ruang" + "Huruf besar auto" + "Besarkan perkataan pertama setiap ayat" + "Kamus peribadi" + "Kamus tambahan" + "Kamus utama" + "Tunjukkan cadangan pembetulan" + "Paparkan cadangan perkataan semasa menaip" + "Sentiasa tunjukkan" + "Tunjukkan dalam mod potret" + "Sentiasa sembunyikan" + "Sekat perkataan yg menyinggung" + "Jangan cadangkan perkataan yang boleh menyinggung" + "Auto pembetulan" + "Bar ruang dan tanda baca secara automatik membetulkan perkataan yang ditaip salah" + "Matikan" + "Sederhana" + "Agresif" + "Sangat agresif" + "Cadangan perkataan seterusnya" + "Gunakan perkataan sebelumnya dalam membuat cadangan" + "Dayakan taipan gerak isyarat" + "Input perkataan dengan meluncur melalui huruf" + "Tunjukkan jejak gerak isyarat" + "Pratonton terapung dinamik" + "Lihat perkataan yang dicadangkan semasa membuat gerak isyarat" + "%s : Disimpan" + "Pergi" + "Seterusnya" + "Sblm" + "Selesai" + "Hantar" + "Jeda" + "Tnggu" + "Pasangkan set kepala untuk mendengar kekunci kata laluan disebut dengan kuat." + "Teks semasa adalah %s" + "Tiada teks dimasukkan" + "Kod kunci %d" + "Shift" + "Kunci anjak dihidupkan (ketik untuk melumpuhkan)" + "Kunci huruf besar dihidupkan (ketik untuk melumpuhkan)" + "Padam" + "Simbol" + "Huruf" + "Nombor" + "Tetapan" + "Tab" + "Space" + "Input suara" + "Muka senyum" + "Return" + "Carian" + "Titik" + "Tukar bahasa" + "Seterusnya" + "Sebelumnya" + "Kunci anjak didayakan" + "Kunci huruf besar didayakan" + "Kunci anjak dilumpuhkan" + "Mod simbol" + "Mod huruf" + "Mod telefon" + "Mod simbol telefon" + "Papan kekunci tersembunyi" + "Menunjukkan %s papan kekunci" + "tarikh" + "tarikh dan masa" + "e-mel" + "pemesejan" + "nombor" + "telefon" + "teks" + "masa" + "URL" + "Kunci input suara" + "Hidpkn kekunci utama" + "Pd ppn k’unci simbol" + "Matikan" + "Mik. pd kekunci utma" + "Mik. pd kekunci smbl" + "Input suara dilmphkn" + "Konfigurasikan kaedah input" + "Bahasa input" + "Hantar maklum balas" + "Bahasa input" + "Sentuh lagi untuk menyimpan" + "Kamus tersedia" + "Dayakan maklum balas pengguna" + "Bantu memperbaik editor kaedah input ini dengan menghantar statistik penggunaan dan laporan ranap secara automatik" + "Tema papan kekunci" + "Bahasa Inggeris (UK)" + "Bahasa Inggeris (AS)" + "Bahasa Sepanyol (AS)" + "Bahasa Inggeris (UK) (%s)" + "Bahasa Inggeris (AS) (%s)" + "Bahasa Sepanyol (AS) (%s)" + "Tiada bahasa (Abjad)" + "Abjad (QWERTY)" + "Abjad (QWERTZ)" + "Abjad (AZERTY)" + "Abjad (Dvorak)" + "Abjad (Colemak)" + "Abjad (PC)" + "Gaya input peribadi" + "Tambah gaya" + "Tambah" + "Alih keluar" + "Simpan" + "Bahasa" + "Reka Letak" + "Gaya input tersuai anda perlu didayakan sebelum anda mula menggunakannya. Adakah anda ingin mendayakannya sekarang?" + "Dayakan" + "Bukan sekarang" + "Gaya input yang sama sudah wujud: %s" + "Mod kajian kebolehgunaan" + "Kelewatan tekan lama kekunci" + "Tempoh getaran tekan kekunci" + "Kelantangan bunyi tekan kekunci" + "Baca fail kamus luaran" + "Tiada fail kamus dalam folder Muat Turun" + "Pilih fail kamus untuk dipasang" + "Betul-betul pasang fail ini untuk %s?" + "Berlaku ralat" + "Lalai" + "Selamat datang ke %s" + "dengan Taipan Gerak Isyarat" + "Bermula" + "Langkah seterusnya" + "Menyediakan %s" + "Dayakan %s" + "Sila semak \"%s\" dlm ttpn Bhs & input. Ini mbnarkn apl djlnkn pd pranti anda." + "%s sudah didayakan dalam tetapan Bahasa & input anda, jadi langkah ini telah selesai. Beralih ke langkah seterusnya!" + "Dayakan dalam Tetapan" + "Beralih ke %s" + "Seterusnya, pilih \"%s\" sebagai kaedah input teks aktif anda." + "Tukar kaedah input" + "Tahniah, anda sudah sedia!" + "Kini anda boleh menaip dalam semua apl kegemaran anda dengan %s." + "Konfigurasikan bahasa tambahan" + "Selesai" + "Tunjukkan ikon apl" + "Paparkan ikon apl dalam pelancar" + "Pembekal Kamus" + "Pembekal Kamus" + "Perkhidmatan Kamus" + "Maklumat kemas kini kamus" + "Kamus tambahan" + "Kamus tersedia" + "Tetapan untuk kamus" + "Kamus pengguna" + "Kamus pengguna" + "Kamus tersedia" + "Sedang memuat turun" + "Dipasang" + "Dipasang, dilumpuhkan" + "Masalah menyambung kepada perkhidmatan kamus" + "Tiada kamus tersedia" + "Muatkan semula" + "Kali terakhir dikemas kini" + "Menyemak kemas kini" + "Memuatkan..." + "Kamus utama" + "Batal" + "Pasang" + "Batal" + "Padam" + "Bahasa pilihan pada peranti mudah alih anda mempunyai kamus tersedia.<br/> Kami mengesyorkan <b>memuat turun</b> kamus %1$s untuk memperbaik pengalaman menaip anda.<br/> <br/> Muat turun boleh mengambil masa seminit atau dua melalui 3G. Caj mungkin dikenakan jika anda tidak mempunyai <b>pelan data tanpa had</b>.<br/> Jika anda tidak pasti jenis pelan data yang anda miliki, kami mengesyorkan agar anda mencari sambungan Wi-Fi untuk mula memuat turun secara automatik.<br/> <br/> Petua: Anda boleh memuat turun dan mengalih keluar kamus dengan pergi ke menu <b>Bahasa & input</b> dalam <b>Tetapan</b> peranti mudah alih anda." + "Muat turun sekarang (%1$.1fMB)" + "Muat turun melalui Wi-Fi" + "Kamus tersedia untuk %1$s" + "Tekan untuk mengulas dan memuat turun" + "Memuat turun: cadangan untuk %1$s akan sedia tidak lama lagi." + "Versi %1$s" + "Tambah" + "Tambah ke kamus" + "Frasa" + "Lagi pilihan" + "Kurang pilihan" + "OK" + "Perkataan:" + "Pintasan:" + "Bahasa:" + "Taip perkataan" + "Pintasan pilihan" + "Edit perkataan" + "Edit" + "Padam" + "Anda tidak mempunyai sebarang perkataan dalam kamus pengguna. Tambahkan perkataan dengan menyentuh butang Tambah (+)." + "Untuk semua bahasa" + "Lebih banyak bahasa..." + "Padam" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml new file mode 100644 index 000000000..6c149456d --- /dev/null +++ b/java/res/values-ne-rNP/strings.xml @@ -0,0 +1,242 @@ + + + + + "इनपुट विकल्पहरू" + "लग निर्देशनहरू शोध गर्नुहोस्" + "सम्पर्क नामहरू हेर्नुहोस्" + "तपाईँको सम्पर्क सूचीबाट हिज्जे परीक्षकले प्रविष्टिहरूको प्रयोग गर्छ" + "कुञ्जी थिच्दा भाइब्रेट" + "कुञ्जी थिच्दा आवाज" + "कुञ्जी दबाउँदा पपअप" + "सामान्य" + "पाठ सुधार" + "इशारा टाइप गर्ने" + "अन्य विकल्पहरू" + "जटिल सेटिङहरू" + "विज्ञहरूका लागि विकल्पहरू" + "अन्य इनपुट विधिमा स्विच गर्नुहोस्" + "भाषा स्विच किले अन्य इनपुट विधि पनि समेट्छ" + "भाषा स्विच कुञ्जी" + "जब बहुसङ्ख्यक इनपुट भाषाहरू सक्षम भएपछि देखाउनुहोस्" + "स्लाइड सूचक देखाउनुहोस्" + "सिफ्ट वा प्रतिक कुञ्जीमा स्लाइड गर्ने बेला दृश्य सङ्केत देखाउनुहोस्" + "कि पपअप खारेजी ढिलाइ" + "ढिलाइ छैन" + "पूर्वनिर्धारित" + "%s मिलिसेकेन्ड" + "प्रणाली पूर्वनिर्धारित" + "सम्पर्क नामहरू सुझाव गर्नुहोस्" + "सुझाव र सुधारका लागि सम्पर्कबाट नामहरू प्रयोग गर्नुहोस्" + "डबल-स्पेस पूर्णविराम" + "स्पेसबारमा डबल ट्याप गर्नाले पूर्णविरामपछि स्पेस राख्दछ" + "स्वतः पूँजिकरण" + "प्रत्येक वाक्यको पहिलो शब्द क्यापिटल गर्नुहोस्" + "व्यक्तिगत शब्दकोश" + "एड-अन शब्दकोश" + "मुख्य शब्दकोश" + "सुधार सुझावहरू देखाउनुहोस्" + "टाइप गर्ने बेलामा सुझाव शब्दहरू देखाउनुहोस्" + "सधैँ देखाउनुहोस्" + "चित्र मोडमा देखाउनुहोस्" + "सधैँ लुकाउनुहोस्" + "आपत्तिजनक शब्दहरूलाई रोक्नुहोस्" + "सम्भावित आपत्तिजनक शब्दहरू सुझाव नगर्नुहोस्" + "स्वतः सुधार" + "गल्ती टाइप भएका शब्दहरूलाई स्पेसबार र पङ्चुएसनले स्वचालित रूपमा सच्याउँछन्।" + "बन्द" + "सामान्य" + "आक्रामक" + "ज्यादै आक्रामक" + "अर्को शब्द सुझाव" + "सुझावहरू निर्माण गर्न अघिल्लो शब्द प्रयोग गर्नुहोस्" + "इशारा टाइप गर्ने सक्षम पार्नुहोस्" + "अक्षर स्लाइड गरी शब्द इनपुट गर्नुहोस्" + "इशारा ट्रेल देखाउनुहोस्" + "गतिशील फ्लोटिङ पूर्वावलोकन" + "इशारा गर्दा सुझाव दिइएको शब्द हेर्नुहोस्" + "%s : बचत गरियो" + "जानुहोस्" + "अर्को" + "अघिल्लो" + "भयो" + "पठाउनुहोस्" + "रोक्नुहोस्" + "प्रतीक्षा गर्नुहोस्" + "हेडसेट प्लग इन गर्नुहोस्" + "वर्तमान पाठ %s हो" + "कुनै पाठ प्रविष्टि गरिएको छैन" + "कुञ्जी कोड %d" + "सिफ्ट" + "सिप्ट सक्रिय (असक्षम पार्न ट्याप गर्नुहोस्)" + "क्याप्स लक सक्रिय छ (असक्षम पार्न ट्याप गर्नुहोस्)" + "मेट्नुहोस्" + "प्रतिकहरू" + "अक्षरहरू" + "नम्बरहरू" + "सेटिङहरू" + "ट्याब" + "स्पेस" + "आवाज इनपुट" + "मुस्कुराएको अनुहार" + "फर्कनुहोस्" + "खोज्नुहोस्" + "डट" + "भाषा स्विच गर्नुहोस्" + "अर्को" + "अघिल्लो" + "सिफ्ट सक्षम पारिएको छ" + "क्याप्स लक सक्षम पारिएको छ" + "सिफ्ट असक्षम पारिएको छ" + "प्रतिक मोड" + "अक्षर मोड" + "फोन मोड" + "फोन प्रतिक मोड" + "किबोर्ड लुकाइएको छ" + "%s किबोर्ड देखाइँदै" + "मिति" + "मिति र समय" + "इमेल" + "सन्देश गर्दै" + "सङ्ख्या" + "फोन" + "पाठ" + "समय" + "URL" + "आवाज इनपुट कुञ्जी" + "मुख्य किबोर्डमा" + "प्रतिकहरू किबोर्डमा" + "बन्द" + "मुख्य किबोर्डमा माइक" + "प्रतिकहरू किबोर्डमा माइक" + "आवाज इनपुट असक्षम पारियो" + "इनपुट विधिहरू कन्फिगर गर्नुहोस्" + "इनपुट भाषाहरू" + "प्रतिक्रिया पठाउनुहोस्" + "इनपुट भाषाहरू" + "बचत गर्न पुनः छुनुहोस्" + "उपलब्ध शब्दकोश" + "प्रयोगकर्ता प्रतिक्रिया सक्षम पार्नुहोस्" + "स्वचालित रूपमा प्रयोग तथ्याङ्कहरू र क्यास रिपोर्टहरू पठाएर यस इनपुट विधि सम्पादकलाई सुधार्न सहयोग गर्नुहोस्।" + "किबोर्ड थिम" + "अंग्रेजी (युके)" + "अंग्रेजी (युएस्)" + "स्पेनिस (युएस्)" + "अंग्रेजी (युके) ( %s )" + "अंग्रेजी (युएस्) ( %s )" + "स्पेनेली (युएस्) ( %s )" + "कुनै भाषा होइन (वर्णमाला)" + "वर्णमाला (QWERTY)" + "वर्णमाला (QWERTZ)" + "वर्णमाला (AZERTY)" + "वर्णमाला (Dvorak)" + "वर्णमाला (Colemak)" + "वर्णमाला (PC)" + "अनुकूलन इनपुट शैली" + "शैली थप्नुहोस्" + "थप्नुहोस्" + "हटाउनुहोस्" + "बचत गर्नुहोस्" + "भाषा" + "लेआउट" + "तपाईँले प्रयोग गर्न सुरु गर्न अघि तपाईँको अनुकूलन इनपुट शैली सक्षम पारिनु पर्छ। के तपाईँ यसलाई अहिले सक्षम पार्न चाहनु हुन्छ?" + "सक्षम पार्नुहोस्" + "अहिले होइन" + "यस्तो इनपुट शैली पहिले नै अवस्थित छ: %s" + "प्रयोग अध्ययन मोड" + "कुञ्जी लामो थिचाइ ढिलाइ" + "कुञ्जी थिचाइ भाइब्रेसन अवधि" + "कुञ्जी थिचाइ आवाज भोल्युम" + "बाह्य शब्दकोश फाइल पढ्नुहोस्" + "डाउनलोड फोल्डरमा कुनै शब्दकोश फाइलहरू छैनन्।" + "स्थापना गर्न कुनै शब्दकोश फाइल चयन गर्नुहोस्" + "%sका लागि साँच्चिकै यो फाइल स्थापना गर्ने हो?" + "कुनै त्रुटि भयो" + "पूर्वनिर्धारित" + "तपाईँलाई स्वागत छ%s" + "इशारा टाइप गर्नेसँग" + "सुरु गरौं" + "अर्को चरण" + "स्थापना गर्दै %s" + "सक्षम पार्नुहोस् %s" + "कृपया जाँच गर्नुहोस् \"%s\" तपाईँको भाषा र इनपुट सेटिङमा। यसले तपाईँलाई तपाईँको उपकरणमा सञ्चालन गर्न आधिकारिकता प्रदान गर्छ।" + "%s पहिले नै तपाईँको भाषा र इनपुट सेटिङमा सक्षम पारिएको छ, त्यसैले यो कदम सकिसकिएको छ। अर्कोमा जानुहोस्!" + "सेटिङहरूमा सक्षम पार्नुहोस्" + "%sमा स्विच गर्नुहोस्" + "त्यसपछि, \"%s\" लाई तपाईँको सक्रिय पाठ इनपुट विधिका रूपमा चयन गर्नुहोस्।" + "इनपुट विधि स्विच गर्नुहोस्" + "बधाई छ, तपाईँले सेट पुरा गर्नुभयो!" + "अब तपाईँ %sका साथ तपाईँका सम्पूर्ण मनपर्ने अनुप्रयोगहरू टाइप गर्न सक्नुहुन्छ।" + "थप भाषाहरू कन्फिगर गर्नुहोस्" + "समाप्त भयो" + "अनुप्रयोग आइकन देखाउनुहोस्" + "लन्चरमा अनुप्रयोग आइकन देखाउनुहोस्" + "शब्दकोश प्रदायक" + "शब्दकोश प्रदायक" + "शब्दकोश सेवा" + "शब्दकोश अद्यावधिक जानकारी" + "एड-अन शब्दकोश" + "उपलब्ध शब्दकोश" + "शब्दकोशहरूका लागि सेटिङहरू" + "प्रयोगकर्ता शब्दकोशहरू" + "प्रयोगकर्ता शब्दकोश" + "उपलब्ध शब्दकोश" + "हाल डाउनलोड गर्दै" + "स्थापित" + "स्थापित, असक्षम पारिएको" + "शब्दकोश सेवासँग जोड्न समस्या" + "शब्दकोशहरू उपलब्ध छैनन्" + "पुनः ताजा गर्नुहोस्" + "पछिल्लो अद्यावधिक" + "अद्यावधिकको लागि जाँच गर्दै" + "लोड हुँदै..." + "मुख्य शब्दकोश" + "रद्द गर्नुहोस्" + "स्थापना गर्नुहोस्" + "रद्द गर्नुहोस्" + "मेट्नुहोस्" + "तपाईँको मोबाइल उपकरणमा चयन गरिएको भाषामा शब्दकोश उपलब्ध छ। हामी सिफारिश गर्छौं %1$s शब्दकोश डाउनलोड गर्नका लागि तपाईँको टाइपिङ अनुभव सुधार्न। यस डाउनलोड 3G मा एक वा दुई मिनेट लाग्छ। शुल्कहरू लाग्न सक्छ यदि तपाईँसँग असीमित डेटा योजना छैन भने। यदि आफूसँग कुन डेटा योजना छ तपाईँ यकिन हुनुहुन्न भने हामी स्वचालित रूपमा डाउनलोड सुरु गर्न वाइ-फाइ जडान खोज्न सिफारिस गर्छौं। सल्लाह: तपाईँको मोबाइल उपकरणको भाषा र इनपुट सेटिङ मेनुमा गई तपाईँ शब्दकोशलाई डाउनलोड वा हटाउन सक्नुहुन्छ।" + "(अब डाउनलोड गर्नुहोस्%1$.1f MB)" + "वाइ-फाइको माध्ययमद्वार डाउनलोड गर्नुहोस्" + "एक शब्दकोश %1$s का लागि उपलब्ध छ" + "समीक्षा गर्न थिच्नुहोस् र डाउनलोड गर्नुहोस्" + "डाउनलोड गरिदै: %1$sका लागि सुझावहरू चाँडै तयार हुने छन्।" + "संस्करण %1$s" + "थप्नुहोस्" + "शब्दकोशमा थप्नुहोस्" + "पदावली" + "थप विकल्पहरू" + "कम विकल्पहरू" + "ठीक छ" + "शब्द:" + "सर्टकट:" + "भाषा:" + "एउटा शब्द टाइप गर्नुहोस्" + "वैकल्पिक सर्टकट" + "शब्द सम्पादन गर्नुहोस्" + "सम्पादन गर्नुहोस्" + "मेट्नुहोस्" + "तपाईँसँग प्रयोगकर्ता शब्दकोशमा कुनै शब्द छैन।\"थप्नुहोस्\"(+) बटनमा छोएर एउटा शब्द थप्नुहोस्।" + "सबै भाषाहरूका लागि" + "थप भाषाहरू..." + "मेट्नुहोस्" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + diff --git a/java/res/values-si-rLK/strings.xml b/java/res/values-si-rLK/strings.xml new file mode 100644 index 000000000..6d2a6f61b --- /dev/null +++ b/java/res/values-si-rLK/strings.xml @@ -0,0 +1,242 @@ + + + + + "ආදාන විකල්ප" + "පර්යේෂණ ලොග් විධාන" + "සබඳතා නම් විමසන්න" + "අක්ෂර වින්‍යාස පරික්ෂකය ඔබගේ සබඳතා ලැයිස්තුව වෙතින් ඇතුළත් කිරීම් භාවිතා කරයි" + "යතුර එබීමට කම්පනය කිරීම සක්‍රියයි" + "යතුරු එබිම මත හඬ" + "යතුරු එබීම මත උත්පතනය" + "සාමාන්‍ය" + "පෙළ නිවැරදි කිරීම" + "ඉංගිතයෙන් ටයිප් කිරීම" + "වෙනත් විකල්ප" + "උසස් සැකසීම්" + "ප්‍රවීනයන් සඳහා විකල්ප" + "වෙනත් ආදාන ක්‍රම වෙත මාරුවන්න" + "භාෂා මාරු යතුර වෙනත් ආදාන ක්‍රමද ආවරණය කරයි" + "භාෂා මාරු යතුර" + "බහුවිධ ආදාන භාෂා සබල කර ඇති විට පෙන්වන්න" + "සර්පණ දර්ශකය පෙන්වන්න" + "ෂිෆ්ට් හෝ සංකේත යතුරු වෙතින් සර්පණය කරන අතරතුර දෘෂ්‍ය ඉඟි දර්ශනය කරන්න" + "යතුරු උත්පතන ඉවත් කිරීමේ ප්‍රමාදය" + "ප්‍රමාද නැත" + "සුපුරුදු" + "%sms" + "පද්ධති සුපුරුදු" + "සබඳතා නම් යෝජනා කරන්න" + "යෝජනා සහ නිවැරදි කිරීම් සඳහා සබඳතා වෙතින් නම් භාවිතා කරන්න" + "දෙවරක්-ඉඩ නැවතීමේ ලකුණ" + "ඉඩ යතුර මත දෙවරක් තට්ටු කිරීම හිස් තැනකට අනුගාමිව නැවතීමේ ලකුණක් ඇතුළත් කරයි." + "ස්වයං-ලොකු අකුරු කරණය" + "එක් එක් වාක්‍යයේ පළමු වචනය ලොකු අකුරු කරන්න" + "පුද්ගලික ශබ්ද කෝෂය" + "ඈඳුම් ශබ්දකෝෂ" + "ප්‍රධාන ශබ්ද කෝෂය" + "නිවැරදි කිරීම් යෝජනා පෙන්වන්න" + "ටයිප් කරන අතරතුර යෝජිත වචන දර්ශනය කරන්න" + "සැමවිටම පෙන්වන්න" + "සිරස් ආකෘති ආකාරය තුළ පෙන්වන්න" + "සැමවිට සඟවන්න" + "අප්‍රසන්න වචන අවහිර කරන්න" + "විභව්‍යව අප්‍රසන්න වචන යෝජනා නොකරන්න" + "ස්වයං-නිවැරදි කිරීම" + "ඉඩ යතුර සහ විරාම ලකුණ වැරදියට ටයිප් කළ වචන ස්වයංක්‍රියව නිවැරදි කරයි" + "අක්‍රිය කරන්න" + "මධ්‍යස්ථ" + "ආක්‍රමණකාරී" + "ඉතා ආක්‍රමණකාරී" + "ඊළඟ-වචනයේ යෝජනා" + "යෝජනා කිරීමේදී පෙර වචනය භාවිතා කරන්න" + "ඉංගිතයෙන් ටයිප් කිරීම සබල කරන්න" + "අකුරු ඔස්සේ සර්පණය කිරීමෙන් වචනයක් ආදානය කරන්න" + "ඉංගිතයෙන් මඟ පෙන්වන්න" + "ගතිකව ඉපිලෙන පෙරදසුන" + "ඉංගිතය කරන අතරතුර යෝජිත වචන බලන්න" + "%s : සුරැකිණි" + "යන්න" + "මීලඟ" + "පෙර" + "හරි" + "යවන්න" + "විරාම කරන්න" + "රැඳී සිටින්න" + "හඬ නගා කථනය කරන මුරපද යතුරු ඇසීමට හෙඩ්සෙට් එකක් පේනුගත කරන්න." + "වර්තමාන පෙළ %s ය" + "පෙළ ඇතුළු කර නැත" + "යතුරු කේතය %d" + "ෂිෆ්ට්" + "ෂිෆ්ට් සක්‍රියයි (අබල කිරීමට තට්ටු කරන්න)" + "කැප්ස් ලොක් සක්‍රියයි (අබල කිරීමට තට්ටු කරන්න)" + "මකන්න" + "සංකේත" + "අකුරු" + "අංක" + "සැකසීම්" + "ටැබය" + "හිඩස" + "හඬ ආදානය" + "සිනහ මුහුණ" + "ආපසු එවන්න" + "සෙවීම" + "තිත" + "භාෂාව මාරු කරන්න" + "මීලඟ" + "පෙර" + "ෂිෆ්ට් සබල කර ඇත" + "කැප්ස් ලොක් සබල කර ඇත" + "ෂිෆ්ට් අබල කර ඇත" + "සංකේත ප්‍රකාරය" + "අකුරු ආකාරය" + "දුරකථන ආකාරය" + "දුරකථන සංකේත ආකාරය" + "යතුරු පුවරුව සැඟවී ඇත" + "%s යතුරු පුවරුව පෙන්නුම් කෙරේ" + "දිනය" + "දිනය සහ වේලාව" + "ඊ-තැපෑල" + "පණිවිඩ යැවීම" + "අංකය" + "දුරකථනය" + "පෙළ" + "කාලය" + "URL" + "හඬ ආදාන යතුර" + "ප්‍රධාන යතුරු පුවරුව මත" + "සංකේත යතුරු පුවරුව මත" + "අක්‍රිය කරන්න" + "ප්‍රධාන යතුරු පුවරුව මත මයික්‍රෆෝනය" + "සංකේත යතුරු පුවරුව මත මයික්‍රෆෝනය" + "හඬ ආදානය අබල කර ඇත" + "ආදාන ක්‍රම වින්‍යාස කරන්න" + "ආදාන භාෂා" + "ප්‍රතිපෝෂණ යවන්න" + "ආදාන භාෂා" + "සුරැකීමට නැවත ස්පර්ශ කරන්න" + "ශබ්ද කෝෂය ලබාගත හැක" + "පරිශීලක ප්‍රතිපෝෂණ සබල කරන්න" + "භාවිතය පිළිබඳ සංඛ්‍යාලේඛන සහ බිඳ වැටීම් වාර්තා ස්වයංක්‍රියව යැවීම මගින් ආදාන ක්‍රම සංස්කාරක වැඩි දියුණු කිරීමට උදව් වන්න." + "යතුරු පුවරු තේමාව" + "ඉංග්‍රීසි (බ්‍රිතාන්‍ය)" + "ඉංග්‍රීසි (ඇමෙරිකානු)" + "ස්පාඤ්ඤ (එජ)" + "ඉංග්‍රිසි (එරා) (%s)" + "ඉංග්‍රීසි (එජ) (%s)" + "ස්පාඤ්ඤ (එජ) (%s)" + "භාෂාවක් නැත (අකාරාදිය)" + "අකාරාදිය (QWERTY)" + "අකාරාදිය (QWERTZ)" + "අකාරාදිය (AZERTY)" + "අකාරාදිය (Dvorak)" + "අකාරාදිය (Colemak)" + "අකාරාදිය (PC)" + "අභිරුචි ආදාන විලාස" + "විලාසය එක් කරන්න" + "එක් කරන්න" + "ඉවත් කරන්න" + "සුරකින්න" + "භාෂාව" + "පිරිසැලසුම" + "ඔබ එය භාවිතය ආරම්භ කිරීමට පෙර ඔබගේ අභිරුචි ආදාන විලාසය සබල කිරීමට අවශ්‍යය. ඔබට එය දැන් සබල කිරීමට අවශ්‍යද?" + "සබල කරන්න" + "දැන් නොවේ" + "සමාන ආදාන විලාසය දැනටමත් පවතී: %s" + "උපයෝජ්‍යතා අධ්‍යයන ආකාරය" + "යතුරු දිගු එබීම් ප්‍රමාදය" + "යතුරු එබිම් කම්පන කාලපරිච්ඡේදය" + "යතුරු එබීම් හඬ තීව්‍රතාවය" + "බාහිර ශබ්ද කෝෂ ගොනුව කියවන්න" + "බාගැනීම් ෆෝල්ඩරය තුළ ශබ්දකෝෂ ගොනු නොමැත" + "ස්ථාපනය කිරීමට ශබ්ද කෝෂ ගොනුවක් තෝරන්න" + "%s සඳහා මෙම ගොනුව ස්ථාපනය කරන්නද?" + "දෝෂයක් ඇති විය" + "සුපුරුදු" + "%s වෙත සාදරයෙන් පිළිගනිමු" + "ඉංගිතයෙන් ටයිප් කිරීම් සමග" + "ආරම්භ කර ගැනීම" + "ඊළඟ පියවර" + "%s සැකසෙමින් පවතී" + "%s සබල කරන්න" + "කරණාකර ඔබගේ භාෂවෙහි සහ ආදාන සැකසීම් වල \"%s\" පරික්ෂා කරන්න. මෙය ඔබගේ උපාංගය මත එයට ධාවනය වීමට අනුමැතිය දෙනු ඇත." + "%s දැනටමත් ඔබගේ භාෂාවෙන් සහ ආදාන සැකසීම්වල සබල කර ඇත, එමනිසා මෙම පියවර නිමයි. ඊළග එක වෙතට!" + "සැකසීම් තුළ සබල කරන්න" + "%s වෙත මාරුවන්න" + "ඊළඟට, ඔබගේ සක්‍රිය පෙළ-ආදාන ක්‍රමය ලෙස \"%s\" තෝරන්න." + "ආදාන ක්‍රම මාරු කරන්න" + "සුබපැතුම්, ඔබ සියල්ල පිහිටුවා ඇත!" + "දැන් ඔබට %s සමගින් ඔබගේ සියළුම ප්‍රියතම යෙදුම් වලින් ටයිප් කළ හැක." + "අතිරේක භාෂා වින්‍යාස කරන්න" + "අවසන්ය" + "යෙදුම් අයිකනය පෙන්වන්න" + "දියත්කරනය තුළ යෙදුම් අයිකනය දර්ශනය කරන්න" + "ශබ්දකෝෂ සැපයුම්කරු" + "ශබ්දකෝෂ සැපයුම්කරු" + "ශබ්ද කෝෂ සේවාව" + "ශබ්ද කෝෂ යාවත්කාලීන තොරතුරු" + "ඈඳුම් ශබ්ද කෝෂ" + "ශබ්දකෝෂය ලබාගත හැක" + "ශබ්ද කෝෂ සඳහා සැකසීම්" + "පරිශීලක ශබ්ද කෝෂ" + "පරිශීලක ශබ්ද කෝෂය" + "ශබ්දකෝෂය ලබාගත හැක" + "දැනට බාගැනේ" + "පිහිටුවා ඇත" + "ස්ථාපනය කළ, අබල කළ" + "ශබ්දකෝෂ සේවාව වෙත සම්බන්ධ වීමට ගැටලුවක්ද" + "ශබ්ද කෝෂ ලබාගත නොහැක" + "නැවුම් කරන්න" + "අවසන් වරට යාවත්කාලීන කළේ" + "යාවත්කාලීන සඳහා පරික්ෂා කෙරේ" + "පූරණය වෙමින්..." + "ප්‍රධාන ශබ්ද කෝෂය" + "අවලංගු කරන්න" + "ස්ථාපනය" + "අවලංගු කරන්න" + "මකන්න" + "ඔබගේ ජංගම උපාංගය මත තෝරාගත් භාෂාවට ලබාගත හැකි ශබ්ද කෝෂයක් ඇත.<br/> අප ඔබගේ ටයිප් කිරීමේ පළපුරුද්ද වැඩි දියුණු කිරීමට %1$s ශබ්ද කෝෂය <b>බාගැනීම</b> නිර්දේශ කරමු.<br/> <br/> 3G හරහා බාගැනීම මිනිත්තුවක් හෝ දෙකක් ගත හැකිය. ඔබට <b>සීමාරහිත දත්ත සැලසුමක්</b> නොමැති නම් ගාස්තු අදාළ විය හැක.<br/> ඔබට තිබෙන්නේ කුමන දත්ත සැලසුමක්ද යන්න පිළිබඳ විශ්වාසයක් නොමැති නම්, බාගැනීම ස්වයංක්‍රියව ආරම්භ කිරීමට Wi-Fi සම්බන්ධයක් සොයා ගැනීම අප නිර්දේශ කරමු.<br/> <br/> ඉඟිය: ඔබට ඔබගේ ජංගම උපාංගයේ <b>සැකසීම්</b> මෙනුව තුළ <b>භාෂාව සහ ආදානය</b> වෙත යාම මගින් ශබ්දකෝෂ බාගැනීමට සහ ඉවත් කිරීමට හැක." + "දැන් බාගන්න (%1$.1fMB)" + "Wi-Fi හරහා බාගන්න" + "%1$s සඳහා ශබ්දකෝෂයක් ලබාගත හැක" + "සමාලෝචනය කිරීමට සහ බාගැනීමට ඔබන්න" + "බාගැනේ: %1$s සඳහා යෝජනා ඉක්මනින් සුදානම් වනු ඇත." + "අනුවාදය %1$s" + "එක් කරන්න" + "ශබ්ද කෝෂය වෙත එක් කරන්න" + "වාක්‍ය ඛණ්ඩය" + "තවත් විකල්ප" + "අඩු විකල්ප" + "හරි" + "වචනය:" + "කෙටිමග:" + "භාෂාව:" + "වචනයක් ටයිප් කරන්න" + "විකල්පමය කෙටිමග" + "වචනය සංස්කරණය කරන්න" + "සංස්කරණය කරන්න" + "මකන්න" + "ඔබට පරිශීලක ශබ්ද කෝෂය තුළ වචන කිසිවක් නැත. එක් කරන්න (+) බොත්තම ස්පර්ශ කිරීම මගින් වචනයක් එක් කරන්න." + "සියලු භාෂාවන් සඳහා" + "තවත් භාෂා…" + "මකන්න" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + From fad5d4ec387401fb62cfc272aff54d1b476baf38 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Fri, 27 Sep 2013 21:44:26 +0900 Subject: [PATCH 2/3] Stop reading dictionary while regenerating. (DO NOT MERGE) Cherrypick of Iead7268a9371b48d729a5f65074ccbc05f3185db Bug: 10831272 Change-Id: Ib6f314ac68696616532ff9c05c7f35813137bf9f --- .../latin/ExpandableBinaryDictionary.java | 150 ++++++++++-------- 1 file changed, 88 insertions(+), 62 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 0774ce203..183f12ad9 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -39,6 +39,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; /** @@ -72,14 +73,15 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { new FormatSpec.FormatOptions(3 /* version */, true /* supportsDynamicUpdate */); /** - * A static map of time recorders, each of which records the time of accesses to a single binary - * dictionary file. The key for this map is the filename and the value is the shared dictionary - * time recorder associated with that filename. + * A static map of update controllers, each of which records the time of accesses to a single + * binary dictionary file and tracks whether the file is regenerating. The key for this map is + * the filename and the value is the shared dictionary time recorder associated with that + * filename. */ - private static volatile ConcurrentHashMap - sFilenameDictionaryTimeRecorderMap = CollectionUtils.newConcurrentHashMap(); + private static final ConcurrentHashMap + sFilenameDictionaryUpdateControllerMap = CollectionUtils.newConcurrentHashMap(); - private static volatile ConcurrentHashMap + private static final ConcurrentHashMap sFilenameExecutorMap = CollectionUtils.newConcurrentHashMap(); /** The application context. */ @@ -106,13 +108,13 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private final boolean mIsUpdatable; // TODO: remove, once dynamic operations is serialized - /** Records access to the shared binary dictionary file across multiple instances. */ - private final DictionaryTimeRecorder mFilenameDictionaryTimeRecorder; + /** Controls updating the shared binary dictionary file across multiple instances. */ + private final DictionaryUpdateController mFilenameDictionaryUpdateController; // TODO: remove, once dynamic operations is serialized - /** Records access to the local binary dictionary for this instance. */ - private final DictionaryTimeRecorder mPerInstanceDictionaryTimeRecorder = - new DictionaryTimeRecorder(); + /** Controls updating the local binary dictionary for this instance. */ + private final DictionaryUpdateController mPerInstanceDictionaryUpdateController = + new DictionaryUpdateController(); /* A extension for a binary dictionary file. */ public static final String DICT_FILE_EXTENSION = ".dict"; @@ -134,15 +136,15 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { protected abstract boolean hasContentChanged(); /** - * Gets the dictionary time recorder for the given filename. + * Gets the dictionary update controller for the given filename. */ - private static DictionaryTimeRecorder getDictionaryTimeRecorder( + private static DictionaryUpdateController getDictionaryUpdateController( String filename) { - DictionaryTimeRecorder recorder = sFilenameDictionaryTimeRecorderMap.get(filename); + DictionaryUpdateController recorder = sFilenameDictionaryUpdateControllerMap.get(filename); if (recorder == null) { - synchronized(sFilenameDictionaryTimeRecorderMap) { - recorder = new DictionaryTimeRecorder(); - sFilenameDictionaryTimeRecorderMap.put(filename, recorder); + synchronized(sFilenameDictionaryUpdateControllerMap) { + recorder = new DictionaryUpdateController(); + sFilenameDictionaryUpdateControllerMap.put(filename, recorder); } } return recorder; @@ -192,7 +194,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { mContext = context; mIsUpdatable = isUpdatable; mBinaryDictionary = null; - mFilenameDictionaryTimeRecorder = getDictionaryTimeRecorder(filename); + mFilenameDictionaryUpdateController = getDictionaryUpdateController(filename); // Currently, only dynamic personalization dictionary is updatable. mDictionaryWriter = getDictionaryWriter(context, dictType, isUpdatable); } @@ -352,6 +354,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { final boolean blockOffensiveWords, final int[] additionalFeaturesOptions, final int sessionId) { reloadDictionaryIfRequired(); + if (isRegenerating()) { + return null; + } final ArrayList suggestions = CollectionUtils.newArrayList(); final AsyncResultHolder> holder = new AsyncResultHolder>(); @@ -412,6 +417,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } protected boolean isValidWordInner(final String word) { + if (isRegenerating()) { + return false; + } final AsyncResultHolder holder = new AsyncResultHolder(); getExecutor(mFilename).executePrioritized(new Runnable() { @Override @@ -437,7 +445,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { * dictionary exists, this method will generate one. */ protected void loadDictionary() { - mPerInstanceDictionaryTimeRecorder.mLastUpdateRequestTime = SystemClock.uptimeMillis(); + mPerInstanceDictionaryUpdateController.mLastUpdateRequestTime = SystemClock.uptimeMillis(); reloadDictionaryIfRequired(); } @@ -448,8 +456,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private void loadBinaryDictionary() { if (DEBUG) { Log.d(TAG, "Loading binary dictionary: " + mFilename + " request=" - + mFilenameDictionaryTimeRecorder.mLastUpdateRequestTime + " update=" - + mFilenameDictionaryTimeRecorder.mLastUpdateTime); + + mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update=" + + mFilenameDictionaryUpdateController.mLastUpdateTime); } final File file = new File(mContext.getFilesDir(), mFilename); @@ -487,8 +495,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private void writeBinaryDictionary() { if (DEBUG) { Log.d(TAG, "Generating binary dictionary: " + mFilename + " request=" - + mFilenameDictionaryTimeRecorder.mLastUpdateRequestTime + " update=" - + mFilenameDictionaryTimeRecorder.mLastUpdateTime); + + mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update=" + + mFilenameDictionaryUpdateController.mLastUpdateTime); } if (needsToReloadBeforeWriting()) { mDictionaryWriter.clear(); @@ -531,11 +539,11 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { */ protected void setRequiresReload(final boolean requiresRebuild) { final long time = SystemClock.uptimeMillis(); - mPerInstanceDictionaryTimeRecorder.mLastUpdateRequestTime = time; - mFilenameDictionaryTimeRecorder.mLastUpdateRequestTime = time; + mPerInstanceDictionaryUpdateController.mLastUpdateRequestTime = time; + mFilenameDictionaryUpdateController.mLastUpdateRequestTime = time; if (DEBUG) { Log.d(TAG, "Reload request: " + mFilename + ": request=" + time + " update=" - + mFilenameDictionaryTimeRecorder.mLastUpdateTime); + + mFilenameDictionaryUpdateController.mLastUpdateTime); } } @@ -544,14 +552,26 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { */ public final void reloadDictionaryIfRequired() { if (!isReloadRequired()) return; - reloadDictionary(); + if (setIsRegeneratingIfNotRegenerating()) { + reloadDictionary(); + } } /** * Returns whether a dictionary reload is required. */ private boolean isReloadRequired() { - return mBinaryDictionary == null || mPerInstanceDictionaryTimeRecorder.isOutOfDate(); + return mBinaryDictionary == null || mPerInstanceDictionaryUpdateController.isOutOfDate(); + } + + private boolean isRegenerating() { + return mFilenameDictionaryUpdateController.mIsRegenerating.get(); + } + + // Returns whether the dictionary can be regenerated. + private boolean setIsRegeneratingIfNotRegenerating() { + return mFilenameDictionaryUpdateController.mIsRegenerating.compareAndSet( + false /* expect */ , true /* update */); } /** @@ -564,39 +584,44 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { getExecutor(mFilename).execute(new Runnable() { @Override public void run() { - final long time = SystemClock.uptimeMillis(); - final boolean dictionaryFileExists = dictionaryFileExists(); - if (mFilenameDictionaryTimeRecorder.isOutOfDate() || !dictionaryFileExists) { - // If the shared dictionary file does not exist or is out of date, the first - // instance that acquires the lock will generate a new one. - if (hasContentChanged() || !dictionaryFileExists) { - // If the source content has changed or the dictionary does not exist, - // rebuild the binary dictionary. Empty dictionaries are supported (in the - // case where loadDictionaryAsync() adds nothing) in order to provide a - // uniform framework. - mFilenameDictionaryTimeRecorder.mLastUpdateTime = time; + try { + final long time = SystemClock.uptimeMillis(); + final boolean dictionaryFileExists = dictionaryFileExists(); + if (mFilenameDictionaryUpdateController.isOutOfDate() + || !dictionaryFileExists) { + // If the shared dictionary file does not exist or is out of date, the + // first instance that acquires the lock will generate a new one. + if (hasContentChanged() || !dictionaryFileExists) { + // If the source content has changed or the dictionary does not exist, + // rebuild the binary dictionary. Empty dictionaries are supported (in + // the case where loadDictionaryAsync() adds nothing) in order to + // provide a uniform framework. + mFilenameDictionaryUpdateController.mLastUpdateTime = time; + writeBinaryDictionary(); + loadBinaryDictionary(); + } else { + // If not, the reload request was unnecessary so revert + // LastUpdateRequestTime to LastUpdateTime. + mFilenameDictionaryUpdateController.mLastUpdateRequestTime = + mFilenameDictionaryUpdateController.mLastUpdateTime; + } + } else if (mBinaryDictionary == null || + mPerInstanceDictionaryUpdateController.mLastUpdateTime + < mFilenameDictionaryUpdateController.mLastUpdateTime) { + // Otherwise, if the local dictionary is older than the shared dictionary, + // load the shared dictionary. + loadBinaryDictionary(); + } + if (mBinaryDictionary != null && !mBinaryDictionary.isValidDictionary()) { + // Binary dictionary is not valid. Regenerate the dictionary file. + mFilenameDictionaryUpdateController.mLastUpdateTime = time; writeBinaryDictionary(); loadBinaryDictionary(); - } else { - // If not, the reload request was unnecessary so revert - // LastUpdateRequestTime to LastUpdateTime. - mFilenameDictionaryTimeRecorder.mLastUpdateRequestTime = - mFilenameDictionaryTimeRecorder.mLastUpdateTime; } - } else if (mBinaryDictionary == null || - mPerInstanceDictionaryTimeRecorder.mLastUpdateTime - < mFilenameDictionaryTimeRecorder.mLastUpdateTime) { - // Otherwise, if the local dictionary is older than the shared dictionary, load - // the shared dictionary. - loadBinaryDictionary(); + mPerInstanceDictionaryUpdateController.mLastUpdateTime = time; + } finally { + mFilenameDictionaryUpdateController.mIsRegenerating.set(false); } - if (mBinaryDictionary != null && !mBinaryDictionary.isValidDictionary()) { - // Binary dictionary is not valid. Regenerate the dictionary file. - mFilenameDictionaryTimeRecorder.mLastUpdateTime = time; - writeBinaryDictionary(); - loadBinaryDictionary(); - } - mPerInstanceDictionaryTimeRecorder.mLastUpdateTime = time; } }); } @@ -636,14 +661,15 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } /** - * Time recorder for tracking whether the dictionary is out of date. + * For tracking whether the dictionary is out of date and the dictionary is regenerating. * Can be shared across multiple dictionary instances that access the same filename. */ - private static class DictionaryTimeRecorder { - private volatile long mLastUpdateTime = 0; - private volatile long mLastUpdateRequestTime = 0; + private static class DictionaryUpdateController { + public volatile long mLastUpdateTime = 0; + public volatile long mLastUpdateRequestTime = 0; + public volatile AtomicBoolean mIsRegenerating = new AtomicBoolean(); - private boolean isOutOfDate() { + public boolean isOutOfDate() { return (mLastUpdateRequestTime > mLastUpdateTime); } } From 4eb9776da22aba0e4a88e354828d3ad7bf387650 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Mon, 30 Sep 2013 18:16:29 +0900 Subject: [PATCH 3/3] Use reentrant lock for main dictionaries. DO NOT MERGE cherrypick of Iaa9b79fc770d8ae2ec9d7c362c90c28bc9f65ea8 Bug: 10964805 Change-Id: Id5e67b00bf9594be0591c87407a78146297e0e78 --- .../inputmethod/latin/DictionaryFactory.java | 31 +++-- .../latin/ReadOnlyBinaryDictionary.java | 120 ++++++++++++++++++ 2 files changed, 135 insertions(+), 16 deletions(-) create mode 100644 java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java index 3721132c5..828e54f14 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java @@ -51,7 +51,7 @@ public final class DictionaryFactory { if (null == locale) { Log.e(TAG, "No locale defined for dictionary"); return new DictionaryCollection(Dictionary.TYPE_MAIN, - createBinaryDictionary(context, locale)); + createReadOnlyBinaryDictionary(context, locale)); } final LinkedList dictList = CollectionUtils.newLinkedList(); @@ -59,11 +59,11 @@ public final class DictionaryFactory { BinaryDictionaryGetter.getDictionaryFiles(locale, context); if (null != assetFileList) { for (final AssetFileAddress f : assetFileList) { - final BinaryDictionary binaryDictionary = new BinaryDictionary(f.mFilename, - f.mOffset, f.mLength, useFullEditDistance, locale, Dictionary.TYPE_MAIN, - false /* isUpdatable */); - if (binaryDictionary.isValidDictionary()) { - dictList.add(binaryDictionary); + final ReadOnlyBinaryDictionary readOnlyBinaryDictionary = + new ReadOnlyBinaryDictionary(f.mFilename, f.mOffset, f.mLength, + useFullEditDistance, locale, Dictionary.TYPE_MAIN); + if (readOnlyBinaryDictionary.isValidDictionary()) { + dictList.add(readOnlyBinaryDictionary); } } } @@ -89,12 +89,12 @@ public final class DictionaryFactory { } /** - * Initializes a dictionary from a raw resource file + * Initializes a read-only binary dictionary from a raw resource file * @param context application context for reading resources * @param locale the locale to use for the resource - * @return an initialized instance of BinaryDictionary + * @return an initialized instance of ReadOnlyBinaryDictionary */ - protected static BinaryDictionary createBinaryDictionary(final Context context, + protected static ReadOnlyBinaryDictionary createReadOnlyBinaryDictionary(final Context context, final Locale locale) { AssetFileDescriptor afd = null; try { @@ -113,9 +113,8 @@ public final class DictionaryFactory { Log.e(TAG, "sourceDir is not a file: " + sourceDir); return null; } - return new BinaryDictionary(sourceDir, afd.getStartOffset(), afd.getLength(), - false /* useFullEditDistance */, locale, Dictionary.TYPE_MAIN, - false /* isUpdatable */); + return new ReadOnlyBinaryDictionary(sourceDir, afd.getStartOffset(), afd.getLength(), + false /* useFullEditDistance */, locale, Dictionary.TYPE_MAIN); } catch (android.content.res.Resources.NotFoundException e) { Log.e(TAG, "Could not find the resource"); return null; @@ -142,10 +141,10 @@ public final class DictionaryFactory { final DictionaryCollection dictionaryCollection = new DictionaryCollection(Dictionary.TYPE_MAIN); for (final AssetFileAddress address : dictionaryList) { - final BinaryDictionary binaryDictionary = new BinaryDictionary(address.mFilename, - address.mOffset, address.mLength, useFullEditDistance, locale, - Dictionary.TYPE_MAIN, false /* isUpdatable */); - dictionaryCollection.addDictionary(binaryDictionary); + final ReadOnlyBinaryDictionary readOnlyBinaryDictionary = new ReadOnlyBinaryDictionary( + address.mFilename, address.mOffset, address.mLength, useFullEditDistance, + locale, Dictionary.TYPE_MAIN); + dictionaryCollection.addDictionary(readOnlyBinaryDictionary); } return dictionaryCollection; } diff --git a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java new file mode 100644 index 000000000..68505ce38 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin; + +import com.android.inputmethod.keyboard.ProximityInfo; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; + +import java.util.ArrayList; +import java.util.Locale; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * This class provides binary dictionary reading operations with locking. An instance of this class + * can be used by multiple threads. Note that different session IDs must be used when multiple + * threads get suggestions using this class. + */ +public final class ReadOnlyBinaryDictionary extends Dictionary { + /** + * A lock for accessing binary dictionary. Only closing binary dictionary is the operation + * that change the state of dictionary. + */ + private final ReentrantReadWriteLock mLock = new ReentrantReadWriteLock(); + + private final BinaryDictionary mBinaryDictionary; + + public ReadOnlyBinaryDictionary(final String filename, final long offset, final long length, + final boolean useFullEditDistance, final Locale locale, final String dictType) { + super(dictType); + mBinaryDictionary = new BinaryDictionary(filename, offset, length, useFullEditDistance, + locale, dictType, false /* isUpdatable */); + } + + public boolean isValidDictionary() { + return mBinaryDictionary.isValidDictionary(); + } + + @Override + public ArrayList getSuggestions(final WordComposer composer, + final String prevWord, final ProximityInfo proximityInfo, + final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) { + return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords, + additionalFeaturesOptions, 0 /* sessionId */); + } + + @Override + public ArrayList getSuggestionsWithSessionId(final WordComposer composer, + final String prevWord, final ProximityInfo proximityInfo, + final boolean blockOffensiveWords, final int[] additionalFeaturesOptions, + final int sessionId) { + if (mLock.readLock().tryLock()) { + try { + return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo, + blockOffensiveWords, additionalFeaturesOptions); + } finally { + mLock.readLock().unlock(); + } + } + return null; + } + + @Override + public boolean isValidWord(final String word) { + if (mLock.readLock().tryLock()) { + try { + return mBinaryDictionary.isValidWord(word); + } finally { + mLock.readLock().unlock(); + } + } + return false; + } + + @Override + public boolean shouldAutoCommit(final SuggestedWordInfo candidate) { + if (mLock.readLock().tryLock()) { + try { + return mBinaryDictionary.shouldAutoCommit(candidate); + } finally { + mLock.readLock().unlock(); + } + } + return false; + } + + @Override + public int getFrequency(final String word) { + if (mLock.readLock().tryLock()) { + try { + return mBinaryDictionary.getFrequency(word); + } finally { + mLock.readLock().unlock(); + } + } + return NOT_A_PROBABILITY; + } + + @Override + public void close() { + mLock.writeLock().lock(); + try { + mBinaryDictionary.close(); + } finally { + mLock.writeLock().unlock(); + } + } +}