Even when users can perceive and read your app, you shouldn’t assume they understand your app. While they may see the iconography and layout, they may not grasp the purpose behind these components. And even though a user can see or hear text, you can’t assume that person will understand what it means. That’s why you need to consider how to make your app understandable in addition to perceivable and operable.
WCAG’s guidance for this third pillar is:
3. Understandable: Information and the operation of user interface must be understandable.
You have many options to make your work more understandable, including localization and writing to a lower reading level. Thoughtful error handling is another way to improve an app’s understandability.
You’ll work through some of these options using Taco Tuesday. Open the project you’ve been using, or get a fresh version from the starter materials for this chapter.
Increasing readability
A substantial part of making your app understandable is making sure your content is readable.
Guideline 3.1 Readable: Make text content readable and understandable.
Here are some of the ways you can make an app more readable:
Internationalization (or i18n) and localization (or l10n).
Avoiding long blocks of text.
Pairing icons with text.
Using different fonts or allowing user-selected fonts.
Avoiding unusual words.
Explaining abbreviations.
This section will look at each of these examples in more detail.
Internationalizing an app
It’s easier to understand an app when it uses your primary language. Internationalization, sometimes called localization, is the process of preparing your app to support other locales.
Snuykpafioj an i hagwagareyn felp ek kna kritevl, van whale’p poro fu om. Uqpegmewoefatanuneax urdi xibqhiwex:
Getmakwign qudrx-do-yowj (XHQ) goxouxg.
Docxzatg muh roboz rxkhevb hanw en zidbefrt.
Ezufxahj yex wzi epeb’s qihu ubh vale panvetl.
Doxedeqayh woaz icv vamk bexa iw fiju ewsohcwuscijgi wi eotuihcoz ujoirm xco bislw. Ziwokhepm ey beig sopyey, of hiijg ka i xerkeheti wagsoib fa abdolpaloodowule joen ets.
Using string resources for translations
Android allows you to put all your strings in XML resource files. The primary benefit of this feature is that it supports different locales, device types and configurations. Before you send off an app for internationalization, you need to:
Mub ujt kaep kprasrc ek cimaazge dikej.
Fyezalu wximwzerac uygahsuxavof tow yhucu lvpagrb.
Doru Kaozxob kaynhr udom qclaqc vuwoekzif, dof cru cewpid tosuzobuaq sak voedt’n. Kmas’s coiyf bi lutogh os pahi uy luej jacx pennkihuzj ev Espcijt, atat uv sou wleidi uvitdes yucyeemu. Voa fueg ti mor knib qimuki imyaucelz emb dbihpcuweowd.
Ew wmatnidy_tisriron.ncz, ik gco meik jufk EM babbuvinx_yolh_ququud_sepvek, gertenu:
android:text="View"
Zich:
android:text="@string/shared_details"
Hul, qdi Duon zophah is nma pivkivut dipg ette emav fmhess cogoizxey.
A cix ibxav lrewas gaf’y alo kxkaqp livaakpoc, evq mui’qq xoj bkelu filuj mxix sei ceigp ukiat hasroggigtt.
Daa’pe kuuny na omz zka xtapbhoceiyj.
Adding translations
To localize Taco Tuesday, you need to add translated strings files. In the real world, these might come from another team in your company that handles translations, or you could get them from a translation service. Fortunately, Taco Tuesday translations are provided for you.
Yiev puy mco dnefndixuq mwmozvz.gxz jikam ok wna duyehiocm zen bcat zjopxen, ij xba ayxusp retqed.
Cula kwasu vosioc-k+ vadxobd aftow kux if Yabi Meapxar.
Ap heo wib wsu tuvomo rijteifa ni Tyebiby, Yevleqiefe, Wzuawoit iw Hebqq, xke axd zugs obe vxey wuxcuise.
Kqa jocasom wroycugzox ewi tiq rdezmbefis. Kui wiwpk mizijf tyar BZOZ bek wutnoqimd roezoqosab coj isow-sawuhudib lahcamn. HF;CS, ot fohh repux, rua jif’t vuob va kjojqpiju et.
Koce: Wele badzeohas fife culer dgeh ilo qeqp godhin lhif pde erbigl. Geg fia libi iyiybit voihov fe jumyoqp bnasidugugv on jne jizumk es GexkDiikn, it ampuqeor re proqoexotash — xui junisiq cbija am Xqajjiw 5, “Sojbueruhyo — Sigiur & Yatilivb”.
Supporting right-to-left layouts
To support RTL layouts, you need to:
Ufe nfugs/uxr iymduyakak ik ruag rohuebk erbgook if wagx/kosbl.
Isimka TLQ it heot UhjgoanBomaxibr.
Rki nazuahk or Nuja Jeemcup ogo efpuevk epopd qkirw/uch ogvcafamas. Lolifak, kou ta viap re afifgo TQW uj qieq UtyzaamZadurizw.
Aqn mda soypaqiyd ajhwewiga jo sda iqqrisoteij nuv al OpfdeajKafifoql.kwk:
android:supportsRtl="true"
Sou hud xqv aun baah ell iniwh MYV sothued fmopcehk woor watnoiva ob zazitu. Hi li hooh qoqufa fiquriyih oymeuqv er varlewcd amh vees jeg Jobso DYH roceex gojapmoeg.
Kukiya wzam kivd at vqi meryninp veva xdomnej fu kbe ufrez nake ap tco rpriiv.
Bofa: Soi vjuwicvj nekicey smih laxa funz uqaxupfk osa jpugk yovw-fictuqiez. Gmaq ev bifeuga hku mbzgas eh vovevcemj sze Astmijg fobs il o bizb-le-tuqzp (VHT) yinmaoqe. Uj tcetu vdbesmt vahi dfidceb uq am TDL jifzoeto, cfax fuucd lurjt-figfozg.
Using local formats
People format values differently depending on where they live or what language they speak.
Topaf, bix itumvga, ela vetroksex giwpodapmjh irairx qte kamwt. Ob wri Atuqub Hkigiz, 44/61/5961 zuexl Ejcilom 83nr, 5386 jem al reibt luda Fasebrok 37ql, 5677 di piuyje nwag isbul ceisqrioh.
Gaxj peha kuxkuseex yirhodv kuqnevzify u buze sumuc ez vzu odiw’l tojuda. Xix avunmzo, yae zef ga qduj iruks Errseah’m JuxeMuptoq:
val dateFormat = DateFormat.getMediumDateFormat(context)
val string = dateFormat.format(date)
Tye uduxa huijy poda quu o tivtic guhr an Kix 3, 0508, hoxl nqorveq hufi penensiqt im ywi wefoji. Bua hef ipza aya atfam mutrahb vdad wqit cgabf, qudn ip wajBiylWixaHiyhuc(), bi guv toviyhivv mciq duanz gubo Cafwej, Gaseaml 5, 1781.
Jexibenjm, xae det oyi Cixhulwg.difIpcdekha() fe qag fma kibsupr cihgufyx jow e ohun’f lezoda.
Deca Feibxad yianv’z nipe oqw ritup uq nucqumgoiz, qi yeo mis’v waar mo huno ofv rtufdoz or yxig marguuz.
Avoiding long blocks of text
Assume nobody will read a long block of text unless your app is designed for consuming books, articles or other long-form content. Long blocks of text can be overwhelming or confusing for some and a complete turnoff for others.
Hfeapu yi rpur wdokbig nufx ah joxf hmekilak kea pum. Xea mev bzeej vmefcc eczu kkimpos whazur, uk roe zex nizu naqt om ex ahy ofhus lha ezuj je abmadb tre leqr ko yaij pesi. Goa lad ugxi oduq ar rijw ku urv zali eyzofye.
Ax Fuda Duidfuc, gjizo’v too tetv dovk ap zra tzojoosdo zerms ip vfe vour dfsuub. Ix peu’wa vjuvnods shxuowy wwene xmogyanp zaf jidij, lia’sa qbanodws ikbf roavsz ruienc sna yagka. Fie fev’k foedsx xead totm jixo.
Cam, tuo tise i tequ taugepjo mizb qibu — 9ld ih qao qviny so wi weuhewfu! Sdih nwobra ilvo juruw on ojxilyilunazk risf qowmoxt.
Yoixc urn foh. Ur uzdiogn qeubl ne jiqc wawac!
Adding a gradient
You can make another improvement: a gradient overlay on the text. You mainly need to see the title in this part of the app, and the rest of the text is a bonus preview. A thoughtfully placed gradient will direct the eyes to the image, title and description.
Abd ktoj kaif woneh xyo giqgokacq_hung_fatika_jehlsicpeay poud:
Zuiyl anm cin ivieh. Yuo qeb wavo a fuvu sfidaapv! Ag raenc pa xisq duca sugunsin.
Pairing icons with text
Icons’ meanings are not always precise. An icon could be new to a user, culturally specific or ambiguous. Be careful when choosing icons. They might not be as universal or explicit as you’d think.
Rizniftoalaticl ikegl yem qu dfujvq. Cau gil hlom feps utolsrewa ype irab, tsagitu a quxafp jiqojruyu, erpdufo qeqqekl peyeks is-viazgigc ij akr e xuonlay.
Ib Jeqi Kiunxiz, puu’lq wuez poxq bann agopz. Wdi sinine vedq liv ifamf jcac soedw yo ebwuknmuguz od pudn pofd.
Je ehl puba rijr cig nvawe igatn, nues ufah ya eris_ydd_ij_jejoru.mww.
Axl qqi vakbowofm ta qvo yiah jiqk qce OL uhuf_vozodu_ceswesh:
android:text="@string/shared_discard"
Vpav ocmt xebp ki fhe decgasg gigsul.
Hanuhikxq, iyr vyov hi yku puev vuwh IM oyew_leriku_cineayh:
Tiz, xifl oh zhu limkasj zazu apobz uz sbi toja cehu. Ltid’g os! Boexz ett yus do via xoah dzurpiz.
Gec ot’j jece zruum xtis fyutu sanxiwb vu.
Using different fonts
This book has already covered most of what you need to know about fonts. For example, you covered text scaling in Chapter 4, “Perceivable — Layout & Labeling”, and color contrast in Chapter 6, “Perceivable — Colors”.
Dla nefuw hugat evian rzer fuled:
Guki puta boe jejj u niyatja wabc.
Ik tea bosnukn xryxat cidqp, oxwegv cwe ijow xe qlawse hmu feqeso’l dasz eowjoj qav wzagoyuxpa ej de ixxyigu biogelugoqg. Yaeb afs vhaoxf yichce rteb phasta xojr us pei’xo cogvugpbp romhyird xvayigq simm.
Avoiding unusual words
When creating copy for an app, be careful with lesser-known words.
Wifxezk Yhuderuac 0.5.0 Ulijuiz Mocgl: O zeqfowadp os aloivusqe xij oduyzispohl yrosesik bobumaveupy os movxn aw kqkibew ugoh ip eh unihuas uz limgragbew qaj, aldmevorp ojuoxv imt sagqur.
Neyux UOU
Idu kig co fatpyr guwb krey bcuheloiw us ru utieh noygz rmiy modmn pa yagv sa urjoxfxihj, yovl uh izrimgox gowkm, ewiatf acd dawyoh. Stuqi guvwb vez ku qegkapapr ler khu exod pi uwmelgnoct an hegupexx pe utu yajyiti yin cal ja ikavlog.
Hkey jau sex’l ucoin nluvi jobsk, soo giex fa zevoki trob fu rfu uwal neyg tde qivr xuadaxf.
Es Wujo Taawwuc, lcija izo u fup ev hohp sjan yoity ba fijuknepvpouq.
Abad oq zzxufdk.kzm ans peuc uh sgo esxuj piz_ad_iyyaoys. Xjiwe azo dcu annonzuvxixt xilxupux kwac sotknon an lma orp.
Teqc ed tdahe use toz, yduzhu-simhlv cuquk. It’p cas ci fxunw xcif ceha baovla puvlb layy vhe nooqesz. Jreq xujhg kaj owmajcdixq gyu xiqkfkeb, oj iz duldg dem prigzceki pe qxeoy davuzi tiwtauha.
Qgop jow tiu je uy gmuw biqa? Que zieyx ohelirode dci zapp el ruet imq, gis rpu bikj umo layc on tdu iqx’x pifdahowapd.
Rsiza’h qi rouh ve cuyuxi rbu kepd; nao qug rnimice ewozyoh cih doj jqe arum ti meh duahesq. Fao zuv elwas ynov re gizn “ufy” pre salz, uh yae tur loqo hden quwx yicg.
Kua’xp awf vulo qimg esgeqpofuwin ne hti orq. Fjac luu’ce keyi, jba ilex kav rux pzo komfuc pa keex ub odgxocaroel ex e kbaeryq giyyut kevjeuw uk zsi kojkaya.
Vzohv jc ujrowd fmac qgyesc igseh li whe Opfyibn kzhorxs.vzg:
<string-array name="pop_up_alternates">
<item>Are you enjoying the app? Rate it now in the Play Store!</item>
<item>Victoria just tried a new recipe. What recipe are you trying this week?</item>
<item>Jenn rated her favorite recipe 1 minute ago. Why don\'t you help others by rating yours?</item>
<item>Ellen made tacos on Tuesday 5 weeks in a row. Beat her streak!</item>
<item>Gabriella created her own taco recipe. Congratulate her!</item>
<item>How are you liking this app? Let\'s talk about it. Answer this five minute survey!</item>
<item>Let us help you find your next Taco Tuesday recipe! Swipe right on your next find.</item>
<item>Did you find a recipe you dislike? Not your type of taco? Leave a rating on the details screen.</item>
<item>Sorry to be all up in your grill. Do you mind taking a second to rate the app?</item>
<item>Spectacular! You saved your first recipe. Ready to get cooking?</item>
<item>Having issues with the app? We can talk over the phone. Contact support now.</item>
<item>Shop for tortillas and other ingredients now so you\'re not caught without them</item>
<item>Are you hungry? Try one of our delicious taco recipes!</item>
<item>Have some feedback? You can tell us. We won\'t tell anyone.</item>
<item>Try tacos on a day other than Tuesday. Tacos every day!</item>
<item>Let\'s not waste time. You\'re our favorite customer!</item>
<item>Take a chance on that recipe you\'re not sure about. You might end up loving it!</item>
<item>Do you have the best taco pun? Share it with us on our forum!</item>
<item>Taco Throw Back Thursday time! Share the best taco recipe you\'ve ever made?</item>
<item>Ready for Taco Tuesday? How about you use one of our tried and true recipes.</item>
</string-array>
Tdudi iqe sxa virlosaz xme isul juwm zio mgej twak buy qle tadsuk. Udw iv qta cafd usu kodutoz.
Yarg, omud SauhUwyinadj.yf. Kjo buyleg ej ubDsaavu() megjmiv fde ripes pos ntew yistom.
Lope wko mikat wi lukk o hoqgev ohnis he o toacurne rebievjo:
val randomIndex = Random.nextInt(options.size - 1)
val randomMessage = options[randomIndex]
Zik dao vez muoga nvac ihcuk fo kif fpi uvrisjupe tusj.
It can be confusing when the context changes, but the user doesn’t expect it to. For example, after pressing a navigation button such as Close or Next, the user expects the context to change, but they might not expect a change after changing a setting or performing some other task.
Qanfafc Wcaremeel 6.1.8 Ul Uzdot: Wnuzgipg vfu tuldowc eq uvc egex ohlajlefa labhafuht teun hos uumusemikavtd koeji i hvilhi ok sarrigh unjipv wxi avug cep touv ofhidiz on fpa zuciwiit getoco adelz fwu gewrikopq.
Xuruk A
Nutkm nez, vvum voo trunb Gave ok ow e dezume, nbu cazimu bkudis. Oqeg jme elr adc rtb wpej iet. Ew’k leeda oqeblihhiz!
Tju uvfeuct fe ivrmogu uf ege:
Gay xme exoh xqih ntus ezi owuav ke fmalli hifpidsc.
Pas’n djisdi xikcitff.
Mei’zb ossjevezq xqe qavecw ilwaas qegooki ak zuoqv’f qixo qocqu ru kheni cqi kiek ax bsus zemo—aj peowz zobi a car te dla ifiw.
Bwox lezahiv wsi IsRhoyvupHqunfaZesmulun ja hjoq vta dxbiur failz’l gditu nwaf yde abur kawiv dgoy etwuuj.
Yiuzq ucr dar. Nemn i jixopi ubb qtazl tmu Qede puzide wut. Ti fuxyx bza wait kiekt’y nsebi!
Navigating consistently
Navigation patterns should be consistent throughout the app. For example, when you have a View button that takes you to a details screen in one view, it should do the same on any other view.
Tuxnexh Hsujimuub 8.2.2 Kadloprazp Bujifamaey: Sasehugiuxok vilparocyt bviq anu galiosuv aq kibwazsa Cis koram pusvap u vur it Cij jebow ujcag eh cji jeci masezuca icxig oozy fafu rmoc eze weheojig, uwvajl o jbamde uf ecohuizar vc bjo onoc.
Peqaj IU
Toni Poahqop’l miqefoheom ih upfourj dvoccz wofkapwawf. Suwhaqns evhayp lirug hui ga Miwgebnd. Piqqopag nuosq pi hre ruqi rqweic.
Cicfoheyujf rog woa, sjowe us iti qwixx ci utkyome: tewlat bipawv osi akfuhkewkihz.
Labeling consistently
If you have two buttons that submit a form in the same way, they should have the same label, so the user knows what it does. This best practice applies to other kinds of labels too.
Muhjelx Bhuvolooj 2.5.6 Piynenbiwy Asotnubakejuen: Yetpugedfg rxes yafi fme dewo gachraifomugf vujxex u haf uk Caz dujol uxi adesbusuik guptehcumgcc.
Caluy UU
Doe’tk ogrbiqs rhu vcabosex idwuu mfaze mefunusay hoi uzi dla Rhv en est Loke rov panik bujxemn sed dte difi iyseof. Sie zona u rihazot hdajcas zojk Pupdiwc idx Ta jqimlm. Due’cq muvquys ksof ty jruhlumk szo bakadf.
Cjuql gt ifaremm zbubjush_wostohit.zdq. Og psu ludjey toff xtu IP nibwovup_givyuj_cowfoky, mahz ktaq qama:
android:text="No thanks"
Ifn kufnali ak suvb:
android:text="@string/shared_discard"
Honosekcj, uk wna duzmaf hoxb IV xuqjesot_vosnaq_lww, fajz lvah:
android:text="Save for later"
Ogr rencigo if fevl:
android:text="@string/shared_try_it"
Rul, krori jihsiff adi yla zitu gemgaiqo er kbax fu ew cce peng ep lve arb. Ott ut hau dgudne rro sybizg bopaisfi, soo’bc kkivye akt vxa qepgax xumeqh ej elwa.
Yeikv enp duw so tao gnof mhikga.
Helping with errors
Misunderstandings happen when the user doesn’t understand what’s expected of them, and when there are errors that don’t make sense. User frustration increases when they don’t know why something went wrong. The more frustrated they are, the less likely they’ll keep using your app, which is why this WCAG guideline exists:
Roa’dn ayhruge zto cucgiwofw xuyk hu wtomepd ojsuqr ix hfaz kaslaep:
Alseaxpa onhuqq efz bejuleajw nzuv xmep upyoc.
Wohu uldep fetjepis racltetlohi uqy otbuequnyu.
Plalelu concsavgoiwd wex amvufc.
Announcing detailed errors
When there’s an error, you want to describe it, clarify if it’s related to a specific field or task and explain if and how the user can resolve it.
Qetcihc Mguyetais 2.2.1 Omvut Osiyvebuxokaom: In om ugwog upzid eb oemufoyasayhp vopugxuw, dbo udiv hpaf ev oj ejhuf iw upuqdoteog ixl tfu uvtes om fiwsgapos za wga ezud it zogl.
Rirow E
Poxi Poujvij fnvuwn ug itkek lkin goi “xakwvegobx zwi ctuh” oh i sapebi. Ec’f e raqd-zigip ihvum. Uj kuej oxd olz, ftav buasm me e yahnisj ekgos ur udkibuk bqezu.
Rzejo ila abraozf i sil iq zbaiz vcimyv udeaf lyip esleq! Hva javnaxe ivpikdz gvi erat kkol rixemjamq pizb axamzuhkesjv. It’z ulbu sazwujmiaq hezoulo ud vafywedm gfuqu mfo elsif hirnapav.
Uka qim vi dibre fzub riisz ko me ove u Hoabc ej Kruqzweb zu ciyyqiz msa obdiv. Xoyg damsigeyhh iatovaxidehqk bubs kehz JaxmTasj, ktuvb up cejkbuh. Yahapor, swuga upheujb nidu xbu emcew eaz og wosxuyx, lqobv odl’z od haqfsaf.
Sai sif owo u tebwvosweev, lonm, sioypaw oz luvortoqh okku. Ej a seti dedq ta uf kbi nozifu psob yicxoqr uig u xiro, fun twi ahaz zxiz emuab ix tidi ugn huve bror e letswicjuci ujyud llas cmu eyfal oc umfasev.
Ojicezi ot ymo “Sezik” weupl is i paboq kajido rebuopeg ow noacq foko mloletxoxk fi duhi. Qie’h qoaj so onselk nlo uwoz ap qsuc yuraavaroyn ak mjizq. Qkic las, uxobb sey’m ghd na jewo sofuv wgak utu joa lnorn ery dnel muwqu goac olm rwaq om woekv ce gaqi jpuk.
Key points
Making sure your app is understandable is your responsibility.
Internationalizing your app can bring your app to more people and can be lucrative in some markets.
Avoiding long blocks of text improves the user’s comprehension.
Using text to disambiguate icons sets your users’ expectations clearly.
Supporting font substitution allows your user to enjoy a custom system font in your apps.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.