PageSourceSearch

https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/

html wojew.com collected 2026-10-02 01:48:39 UTC 56,117 bytes, 382 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pl-PL">
3
4<head>
5<meta charset="UTF-8">
6<meta name="viewport" content="width=device-width, initial-scale=1">
7<link rel="profile" href="http://gmpg.org/xfn/11">
8
9<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
10
11	<!-- This site is optimized with the Yoast SEO plugin v25.6 - https://yoast.com/wordpress/plugins/seo/ -->
12	<title>Flutter Localizations - naucz aplikację mówić w różnych językach - Wojew Wojciech Zahradnik</title>
13	<link rel="canonical" href="https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/" />
14	<meta property="og:locale" content="pl_PL" />
15	<meta property="og:type" content="article" />
16	<meta property="og:title" content="Flutter Localizations - naucz aplikację mówić w różnych językach - Wojew Wojciech Zahradnik" />
17	<meta property="og:description" content="Jako, że wielojęzyczność w aplikacji jest bardzo ważnym aspektem postanowiłem opowiedzieć o nim w moim nowym filmie &#8211; zapraszam do" />
18	<meta property="og:url" content="https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/" />
19	<meta property="og:site_name" content="Wojew Wojciech Zahradnik" />
20	<meta property="article:published_time" content="2020-06-24T16:11:00+00:00" />
21	<meta property="article:modified_time" content="2020-06-24T16:17:04+00:00" />
22	<meta property="og:image" content="https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png" />
23	<meta property="og:image:width" content="500" />
24	<meta property="og:image:height" content="500" />
25	<meta property="og:image:type" content="image/png" />
26	<meta name="author" content="Wojciech Zahradnik" />
27	<meta name="twitter:card" content="summary_large_image" />
28	<meta name="twitter:label1" content="Napisane przez" />
29	<meta name="twitter:data1" content="Wojciech Zahradnik" />
30	<meta name="twitter:label2" content="Szacowany czas czytania" />
31	<meta name="twitter:data2" content="2 minuty" />
32	
32<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#article","isPartOf":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/"},"author":{"name":"Wojciech Zahradnik","@id":"https://wojew.com/#/schema/person/ec336e8ed15b76dfb685e4409e3548d5"},"headline":"Flutter Localizations &#8211; naucz aplikację mówić w różnych językach","datePublished":"2020-06-24T16:11:00+00:00","dateModified":"2020-06-24T16:17:04+00:00","mainEntityOfPage":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/"},"wordCount":103,"commentCount":0,"publisher":{"@id":"https://wojew.com/#organization"},"image":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#primaryimage"},"thumbnailUrl":"https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png","keywords":["android","android studio","basics","cupertino","dart","developer","flutter","google","i18n","Internationalizing","ios","iphone","java","javascript","język","kotlin","localizations","material design","multilanguage","początki","programming","programowanie","swift","ui","ux","visual studio code","vs code","wojew","xcode"],"articleSection":["Flutter"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#respond"]}]},{"@type":"WebPage","@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/","url":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/","name":"Flutter Localizations - naucz aplikację mówić w różnych językach - Wojew Wojciech Zahradnik","isPartOf":{"@id":"https://wojew.com/#website"},"primaryImageOfPage":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#primaryimage"},"image":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#primaryimage"},"thumbnailUrl":"https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png","datePublished":"2020-06-24T16:11:00+00:00","dateModified":"2020-06-24T16:17:04+00:00","breadcrumb":{"@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#primaryimage","url":"https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png","contentUrl":"https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png","width":500,"height":500},{"@type":"BreadcrumbList","@id":"https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona główna","item":"https://wojew.com/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://wojew.com/blog/"},{"@type":"ListItem","position":3,"name":"Flutter Localizations &#8211; naucz aplikację mówić w różnych językach"}]},{"@type":"WebSite","@id":"https://wojew.com/#website","url":"https://wojew.com/","name":"Wojew Wojciech Zahradnik","description":"Mobile App Developer","publisher":{"@id":"https://wojew.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://wojew.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https://wojew.com/#organization","name":"Wojew Wojciech Zahradnik","url":"https://wojew.com/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https://wojew.com/#/schema/logo/image/","url":"https://wojew.com/wp-content/uploads/2020/05/LogoStronaHeader.png","contentUrl":"https://wojew.com/wp-content/uploads/2020/05/LogoStronaHeader.png","width":300,"height":100,"caption":"Wojew Wojciech Zahradnik"},"image":{"@id":"https://wojew.com/#/schema/logo/image/"}},{"@type":"Person","@id":"https://wojew.com/#/schema/person/ec336e8ed15b76dfb685e4409e3548d5","name":"Wojciech Zahradnik","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https://wojew.com/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/6a50a5cb2ae8d7cd065a32cffc3600f0?s=96&d=retro&r=g","contentUrl":"https://secure.gravatar.com/avatar/6a50a5cb2ae8d7cd065a32cffc3600f0?s=96&d=retro&r=g","caption":"Wojciech Zahradnik"}}]}</script>
32
33	<!-- / Yoast SEO plugin. -->
34
35
36<link rel="alternate" type="application/rss+xml" title="Wojew Wojciech Zahradnik &raquo; Kanał z wpisami" href="https://wojew.com/feed/" />
37<link rel="alternate" type="application/rss+xml" title="Wojew Wojciech Zahradnik &raquo; Kanał z komentarzami" href="https://wojew.com/comments/feed/" />
38<link rel="alternate" type="application/rss+xml" title="Wojew Wojciech Zahradnik &raquo; Flutter Localizations &#8211; naucz aplikację mówić w różnych językach Kanał z komentarzami" href="https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/feed/" />
39<script type="text/javascript">
40/* <![CDATA[ */
41window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/wojew.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.6.9"}};
42/*! This file is auto-generated */
43!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
44/* ]]> */
45</script>
45
46<link rel='stylesheet' id='donovan-theme-fonts-css' href='https://wojew.com/wp-content/fonts/f58c072f8a2d8f64f33493aecd90c162.css?ver=20201110' type='text/css' media='all' />
47<style id='wp-emoji-styles-inline-css' type='text/css'>
48
49	img.wp-smiley, img.emoji {
50		display: inline !important;
51		border: none !important;
52		box-shadow: none !important;
53		height: 1em !important;
54		width: 1em !important;
55		margin: 0 0.07em !important;
56		vertical-align: -0.1em !important;
57		background: none !important;
58		padding: 0 !important;
59	}
60</style>
61<link rel='stylesheet' id='wp-block-library-css' href='https://wojew.com/wp-includes/css/dist/block-library/style.min.css?ver=6.6.9' type='text/css' media='all' />
62<style id='classic-theme-styles-inline-css' type='text/css'>
63/*! This file is auto-generated */
64.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
65</style>
66<style id='global-styles-inline-css' type='text/css'>
67:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--primary: #ee1133;--wp--preset--color--secondary: #d5001a;--wp--preset--color--tertiary: #bb0000;--wp--preset--color--accent: #1153ee;--wp--preset--color--highlight: #eedc11;--wp--preset--color--light-gray: #f2f2f2;--wp--preset--color--gray: #666666;--wp--preset--color--dark-gray: #202020;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
67--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
67.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
68:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
69:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
70:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
71</style>
72<link rel='stylesheet' id='donovan-stylesheet-css' href='https://wojew.com/wp-content/themes/donovan/style.css?ver=1.9.1' type='text/css' media='all' />
73<style id='donovan-stylesheet-inline-css' type='text/css'>
74.site-title, .site-description { position: absolute; clip: rect(1px, 1px, 1px, 1px); width: 1px; height: 1px; overflow: hidden; }
75.site-branding .custom-logo { width: 150px; }
76</style>
77<link rel='stylesheet' id='heateor_sss_frontend_css-css' href='https://wojew.com/wp-content/plugins/sassy-social-share/public/css/sassy-social-share-public.css?ver=3.3.79' type='text/css' media='all' />
78<style id='heateor_sss_frontend_css-inline-css' type='text/css'>
79.heateor_sss_button_instagram span.heateor_sss_svg,a.heateor_sss_instagram span.heateor_sss_svg{background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.heateor_sss_horizontal_sharing .heateor_sss_svg,.heateor_sss_standard_follow_icons_container .heateor_sss_svg{color:#fff;border-width:0px;border-style:solid;border-color:transparent}.heateor_sss_horizontal_sharing .heateorSssTCBackground{color:#666}.heateor_sss_horizontal_sharing span.heateor_sss_svg:hover,.heateor_sss_standard_follow_icons_container span.heateor_sss_svg:hover{border-color:transparent;}.heateor_sss_vertical_sharing span.heateor_sss_svg,.heateor_sss_floating_follow_icons_container span.heateor_sss_svg{color:#fff;border-width:0px;border-style:solid;border-color:transparent;}.heateor_sss_vertical_sharing .heateorSssTCBackground{color:#666;}.heateor_sss_vertical_sharing span.heateor_sss_svg:hover,.heateor_sss_floating_follow_icons_container span.heateor_sss_svg:hover{border-color:transparent;}@media screen and (max-width:783px) {.heateor_sss_vertical_sharing{display:none!important}}
80</style>
81<script type="text/javascript" src="https://wojew.com/wp-content/themes/donovan/assets/js/svgxuse.min.js?ver=1.2.6" id="svgxuse-js"></script>
vendor: 1 bytes, line 81
81
82<script type="text/javascript" src="https://wojew.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 82
82
83<script type="text/javascript" src="https://wojew.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
83
84<link rel="https://api.w.org/" href="https://wojew.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://wojew.com/wp-json/wp/v2/posts/272" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://wojew.com/xmlrpc.php?rsd" />
85<meta name="generator" content="WordPress 6.6.9" />
86<link rel='shortlink' href='https://wojew.com/?p=272' />
87<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://wojew.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" />
88<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://wojew.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F&#038;format=xml" />
89<link rel="pingback" href="https://wojew.com/xmlrpc.php">
90<style type="text/css" id="custom-background-css">
91body.custom-background { background-color: #cecece; }
92</style>
93	<link rel="icon" href="https://wojew.com/wp-content/uploads/2020/05/cropped-Logo_czerń@2x-32x32.png" sizes="32x32" />
94<link rel="icon" href="https://wojew.com/wp-content/uploads/2020/05/cropped-Logo_czerń@2x-192x192.png" sizes="192x192" />
95<link rel="apple-touch-icon" href="https://wojew.com/wp-content/uploads/2020/05/cropped-Logo_czerń@2x-180x180.png" />
96<meta name="msapplication-TileImage" content="https://wojew.com/wp-content/uploads/2020/05/cropped-Logo_czerń@2x-270x270.png" />
97</head>
98
99<body class="post-template-default single single-post postid-272 single-format-standard custom-background wp-custom-logo wp-embed-responsive blog-grid-layout">
100
101	<div id="page" class="site">
102		<a class="skip-link screen-reader-text" href="#content">Przejdź do treści</a>
103
104		
105		
106		<header id="masthead" class="site-header clearfix" role="banner">
107
108			<div class="header-main container clearfix">
109
110				<div id="logo" class="site-branding clearfix">
111
112					<a href="https://wojew.com/" class="custom-logo-link" rel="home"><img width="300" height="100" src="https://wojew.com/wp-content/uploads/2020/05/LogoStronaHeader.png" class="custom-logo" alt="Wojew Wojciech Zahradnik" decoding="async" /></a>					
113			<p class="site-title"><a href="https://wojew.com/" rel="home">Wojew Wojciech Zahradnik</a></p>
114
115							
116			<p class="site-description">Mobile App Developer</p>
117
118			
119				</div><!-- .site-branding -->
120
121				
122			</div><!-- .header-main -->
123
124			
125
126	<div id="main-navigation-wrap" class="primary-navigation-wrap">
127
128		<div id="main-navigation-container" class="primary-navigation-container container">
129
130			
131			<button class="primary-menu-toggle menu-toggle" aria-controls="primary-menu" aria-expanded="false" >
132				<svg class="icon icon-menu" aria-hidden="true" role="img"> <use xlink:href="https://wojew.com/wp-content/themes/donovan/assets/icons/genericons-neue.svg#menu"></use> </svg><svg class="icon icon-close" aria-hidden="true" role="img"> <use xlink:href="https://wojew.com/wp-content/themes/donovan/assets/icons/genericons-neue.svg#close"></use> </svg>				<span class="menu-toggle-text">Menu</span>
133			</button>
134
135			<div class="primary-navigation">
136
137				<nav id="site-navigation" class="main-navigation" role="navigation"  aria-label="Menu główne">
138
139					<ul id="primary-menu" class="menu"><li id="menu-item-21" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-21"><a href="https://wojew.com/">Home</a></li>
140<li id="menu-item-23" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-23"><a href="https://wojew.com/blog/">Blog</a></li>
141<li id="menu-item-84" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-84"><a href="https://wojew.com/dawca-krwi/">Dawca krwi</a></li>
142</ul>				</nav><!-- #site-navigation -->
143
144			</div><!-- .primary-navigation -->
145
146		</div>
147
148	</div>
149
150
151
152			
153			
154		</header><!-- #masthead -->
155
156		
157		<div id="content" class="site-content container">
158
159			
160	<div id="primary" class="content-area">
161		<main id="main" class="site-main">
162
163		
164<article id="post-272" class="post-272 post type-post status-publish format-standard has-post-thumbnail hentry category-flutter tag-android tag-android-studio tag-basics tag-cupertino tag-dart tag-developer tag-flutter tag-google tag-i18n tag-internationalizing tag-ios tag-iphone tag-java tag-javascript tag-jezyk tag-kotlin tag-localizations tag-material-design tag-multilanguage tag-poczatki tag-programming tag-programowanie tag-swift tag-ui tag-ux tag-visual-studio-code tag-vs-code tag-wojew tag-xcode">
165
166	
167			<div class="post-image">
168				<img width="500" height="500" src="https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations.png 500w, https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations-300x300.png 300w, https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations-100x100.png 100w, https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations-416x416.png 416w, https://wojew.com/wp-content/uploads/2020/06/flutterlocalizations-150x150.png 150w" sizes="(max-width: 500px) 100v
168w, 500px" />			</div>
169
170			
171	<div class="post-content">
172
173		<header class="entry-header">
174
175			<h1 class="entry-title">Flutter Localizations &#8211; naucz aplikację mówić w różnych językach</h1>
176			<div class="entry-meta post-details"><span class="posted-on meta-date">Opublikowano <a href="https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/" rel="bookmark"><time class="entry-date published" datetime="2020-06-24T18:11:00+02:00">24 czerwca 2020</time><time class="updated" datetime="2020-06-24T18:17:04+02:00">24 czerwca 2020</time></a></span><span class="posted-by meta-author"> przez <span class="author vcard"><a class="url fn n" href="https://wojew.com/author/admin8865/" title="Zobacz wszystkie wpisy, których autorem jest Wojciech Zahradnik" rel="author">Wojciech Zahradnik</a></span></span></div>
177		</header><!-- .entry-header -->
178
179		<div class="entry-content clearfix">
180
181			
182<p>Jako, że wielojęzyczność w aplikacji jest bardzo ważnym aspektem postanowiłem opowiedzieć o nim w moim nowym filmie &#8211; zapraszam do oglądania!</p>
183
184
185
186<p>Z filmu dowiesz się: <br>&#8211; jak używać biblioteki flutter_localizations <br>&#8211; jak obsłużyć różne języki <br>&#8211; jak to wszystko działa na pokazanym przykładzie</p>
187
188
189
190<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
191<iframe title="Flutter Localizations - naucz aplikację mówić w różnych językach" width="910" height="512" src="https://www.youtube.com/embed/s7aFxxqrzYA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
192</div></figure>
193
194
195
196<p>Tutaj kod, o którym wspominam w filmie:</p>
197
198
199
200<h2 class="wp-block-heading">ios/Runner/Info.plist</h2>
201
202
203
204<pre class="wp-block-code"><code>&lt;key>CFBundleLocalizations&lt;/key>
205&lt;array>
206	&lt;string>English&lt;/string>
207	&lt;string>es&lt;/string>
208	&lt;string>pl&lt;/string>
209&lt;/array></code></pre>
210
211
212
213<h2 class="wp-block-heading">i18n.dart</h2>
214
215
216
217<pre class="wp-block-code"><code>import 'dart:async';
218import 'dart:convert';
219
220import 'package:flutter/material.dart';
221import 'package:flutter/services.dart';
222
223class I18n {
224  final Locale locale;
225
226  //Konstruktor
227  I18n(this.locale);
228
229  //Mapa do przechowywania klucze i wartości tekstów
230  Map&lt;String, String> _localizedStrings;
231
232  //Metoda (faktory) do wyciągania resource na podstawie kontekstu
233  static I18n of(BuildContext context) {
234    return Localizations.of&lt;I18n>(context, I18n);
235  }
236
237  //Delegata, którą uywamy w localizationsDelegates w MaterialApp
238  static const LocalizationsDelegate&lt;I18n> delegate = _I18nDelegate();
239
240  //Lista wspieranych języków, u nas pierwszy na liście to język domyślny
241  static const supportedLocales = &#91;Locale('en'), Locale('es'), Locale('pl')];
242
243  //Ładowanie z pliku .json dla odpowiedniego locale
244  Future&lt;void> load() async {
245    String jsonString = await rootBundle.loadString(getAssetPath());
246    //Dekodowanie
247    Map&lt;String, dynamic> jsonMap = json.decode(jsonString);
248    //Zmapowanie do lokalnej mapy
249    _localizedStrings = jsonMap.map((key, value) {
250      return MapEntry(key, value.toString());
251    });
252  }
253
254  //Funkcja, która wybiera odpowiedni locale ze wspieranych przez aplikację
255  String getAssetPath() {
256    //Jeśli telefon ma ustawiony inny język niż wspierany przez naszą aplikację to wtedy wybierany jest pierwszy język z listy supportedLocales
257    final localeToUse = supportedLocales.firstWhere(
258        (element) => element.languageCode == locale.languageCode,
259        orElse: () => supportedLocales.first);
260
261    return 'assets/i18n/${localeToUse.languageCode}.json';
262  }
263
264  //Wyciągnięcie tekstu po kluczu
265  String translate(String key) {
266    return _localizedStrings&#91;key];
267  }
268}
269
270class _I18nDelegate extends LocalizationsDelegate&lt;I18n> {
271  const _I18nDelegate();
272
273  //Sprawdzanie czy dany Locale jest przez nas wspierany
274  @override
275  bool isSupported(Locale locale) {
276    return true;
277  }
278
279  //Funkcja, która wywoływana jest podczas tworzenia MaterialApp przy starcie aplikacji
280  //Przekazywany Locale jest brany z ustawień telefonu
281  @override
282  Future&lt;I18n> load(Locale locale) async {
283    //Utworzenie naszej klasy I18n
284    final localizations = I18n(locale);
285    //Pobranie tekstów z odpowiedniego pliku .json
286    await localizations.load();
287    return localizations;
288  }
289
290  //Funkcja, która określa czy należy wywołać load przy odświeżeniu widgetu
291  @override
292  bool shouldReload(_I18nDelegate old) => false;
293}
294</code></pre>
295
296
297
298<p>Jeśli masz jakieś pytanie – pisz śmiało! 🙂&nbsp;<br>Zapraszam również do subskrybcji kanału.</p>
299<div class='heateorSssClear'></div><div  class='heateor_sss_sharing_container heateor_sss_horizontal_sharing' data-heateor-sss-href='https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/'><div class='heateor_sss_sharing_title' style="font-weight:bold" >Udostępnij</div><div class="heateor_sss_sharing_ul"><a aria-label="Facebook" class="heateor_sss_facebook" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" title="Facebook" rel="nofollow noopener" target="_blank" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg" style="background-color:#0765FE;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 32 32"><path fill="#fff" d="M28 16c0-6.627-5.373-12-12-12S4 9.373 4 16c0 5.628 3.875 10.35 9.101 11.647v-7.98h-2.474V16H13.1v-1.58c0-4.085 1.849-5.978 5.859-5.978.76 0 2.072.15 2.608.298v3.325c-.283-.03-.775-.045-1.386-.045-1.967 0-2.728.745-2.728 2.683V16h3.92l-.673 3.667h-3.247v8.245C23.395 27.195 28 22.135 28 16Z"></path></svg></span></a><a aria-label="Twitter" class="heateor_sss_button_twitter" href="https://twitter.com/intent/tweet?text=Flutter%20Localizations%20-%20naucz%20aplikacj%C4%99%20m%C3%B3wi%C4%87%20w%20r%C3%B3%C5%BCnych%20j%C4%99zykach&url=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" title="Twitter" rel="nofollow noopener" target="_blank" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg heateor_sss_s__default heateor_sss_s_twitter" style="background-color:#55acee;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="-4 -4 39 39"><path d="M28 8.557a9.913 9.913 0 0 1-2.828.775 4.93 4.93 0 0 0 2.166-2.725 9.738 9.738 0 0 1-3.13 1.194 4.92 4.92 0 0 0-3.593-1.55 4.924 4.924 0 0 0-4.794 6.049c-4.09-.21-7.72-2.17-10.15-5.15a4.942 4.942 0 0 0-.665 2.477c0 1.71.87 3.214 2.19 4.1a4.968 4.968 0 0 1-2.23-.616v.06c0 2.39 1.7 4.38 3.952 4.83-.414.115-.85.174-1.297.174-.318 0-.626-.03-.928-.086a4.935 4.935 0 0 0 4.6 3.42 9.893 9.893 0 0 1-6.114 2.107c-.398 0-.79-.023-1.175-.068a13.953 13.953 0 0 0 7.55 2.213c9.056 0 14.01-7.507 14.01-14.013 0-.213-.005-.426-.015-.637.96-.695 1.795-1.56 2.455-2.55z" fill="#fff"></path></svg></span></a><a aria-label="Linkedin" class="heateor_sss_button_linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" title="Linkedin" rel="nofollow noopener" target="_blank" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg heateor_sss_s__default heateor_sss_s_linkedin" style="background-color:#0077b5;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewB
299ox="0 0 32 32"><path d="M6.227 12.61h4.19v13.48h-4.19V12.61zm2.095-6.7a2.43 2.43 0 0 1 0 4.86c-1.344 0-2.428-1.09-2.428-2.43s1.084-2.43 2.428-2.43m4.72 6.7h4.02v1.84h.058c.56-1.058 1.927-2.176 3.965-2.176 4.238 0 5.02 2.792 5.02 6.42v7.395h-4.183v-6.56c0-1.564-.03-3.574-2.178-3.574-2.18 0-2.514 1.7-2.514 3.46v6.668h-4.187V12.61z" fill="#fff"></path></svg></span></a><a target="_blank" aria-label="Facebook Messenger" class="heateor_sss_button_facebook_messenger" href="https://www.facebook.com/dialog/send?app_id=1904103319867886&display=popup&link=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F&redirect_uri=https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg heateor_sss_s__default heateor_sss_s_facebook_messenger" style="background-color:#0084ff;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="-2 -2 36 36"><path fill="#fff" d="M16 5C9.986 5 5.11 9.56 5.11 15.182c0 3.2 1.58 6.054 4.046 7.92V27l3.716-2.06c.99.276 2.04.425 3.128.425 6.014 0 10.89-4.56 10.89-10.183S22.013 5 16 5zm1.147 13.655L14.33 15.73l-5.423 3 5.946-6.31 2.816 2.925 5.42-3-5.946 6.31z"/></svg></span></a><a aria-label="Whatsapp" class="heateor_sss_whatsapp" href="https://api.whatsapp.com/send?text=Flutter%20Localizations%20-%20naucz%20aplikacj%C4%99%20m%C3%B3wi%C4%87%20w%20r%C3%B3%C5%BCnych%20j%C4%99zykach%20https%3A%2F%2Fwojew.com%2Fflutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach%2F" title="Whatsapp" rel="nofollow noopener" target="_blank" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg" style="background-color:#55eb4c;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="-6 -5 40 40"><path class="heateor_sss_svg_stroke heateor_sss_no_fill" stroke="#fff" stroke-width="2" fill="none" d="M 11.579798566743314 24.396926207859085 A 10 10 0 1 0 6.808479557110079 20.73576436351046"></path><path d="M 7 19 l -1 6 l 6 -1" class="heateor_sss_no_fill heateor_sss_svg_stroke" stroke="#fff" stroke-width="2" fill="none"></path><path d="M 10 10 q -1 8 8 11 c 5 -1 0 -6 -1 -3 q -4 -3 -5 -5 c 4 -2 -1 -5 -1 -4" fill="#fff"></path></svg></span></a><a aria-label="Copy Link" class="heateor_sss_button_copy_link" title="Copy Link" rel="noopener" href="https://wojew.com/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/" onclick="event.preventDefault()" style="font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle"><span class="heateor_sss_svg heateor_sss_s__default heateor_sss_s_copy_link" style="background-color:#ffc112;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box"><svg style="display:block;border-radius:999px;" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="-4 -4 40 40"><path fill="#fff" d="M24.412 21.177c0-.36-.126-.665-.377-.917l-2.804-2.804a1.235 1.235 0 0 0-.913-.378c-.377 0-.7.144-.97.43.026.028.11.11.255.25.144.14.24.236.29.29s.117.14.2.256c.087.117.146.232.177.344.03.112.046.236.046.37 0 .36-.126.666-.377.918a1.25 1.25 0 0 1-.918.377 1.4 1.4 0 0 1-.373-.047 1.062 1.062 0 0 1-.345-.175 2.268 2.268 0 0 1-.256-.2 6.815 6.815 0 0 1-.29-.29c-.14-.142
299-.223-.23-.25-.254-.297.28-.445.607-.445.984 0 .36.126.664.377.916l2.778 2.79c.243.243.548.364.917.364.36 0 .665-.118.917-.35l1.982-1.97c.252-.25.378-.55.378-.9zm-9.477-9.504c0-.36-.126-.665-.377-.917l-2.777-2.79a1.235 1.235 0 0 0-.913-.378c-.35 0-.656.12-.917.364L7.967 9.92c-.254.252-.38.553-.38.903 0 .36.126.665.38.917l2.802 2.804c.242.243.547.364.916.364.377 0 .7-.14.97-.418-.026-.027-.11-.11-.255-.25s-.24-.235-.29-.29a2.675 2.675 0 0 1-.2-.255 1.052 1.052 0 0 1-.176-.344 1.396 1.396 0 0 1-.047-.37c0-.36.126-.662.377-.914.252-.252.557-.377.917-.377.136 0 .26.015.37.046.114.03.23.09.346.175.117.085.202.153.256.2.054.05.15.148.29.29.14.146.222.23.25.258.294-.278.442-.606.442-.983zM27 21.177c0 1.078-.382 1.99-1.146 2.736l-1.982 1.968c-.745.75-1.658 1.12-2.736 1.12-1.087 0-2.004-.38-2.75-1.143l-2.777-2.79c-.75-.747-1.12-1.66-1.12-2.737 0-1.106.392-2.046 1.183-2.818l-1.186-1.185c-.774.79-1.708 1.186-2.805 1.186-1.078 0-1.995-.376-2.75-1.13l-2.803-2.81C5.377 12.82 5 11.903 5 10.826c0-1.08.382-1.993 1.146-2.738L8.128 6.12C8.873 5.372 9.785 5 10.864 5c1.087 0 2.004.382 2.75 1.146l2.777 2.79c.75.747 1.12 1.66 1.12 2.737 0 1.105-.392 2.045-1.183 2.817l1.186 1.186c.774-.79 1.708-1.186 2.805-1.186 1.078 0 1.995.377 2.75 1.132l2.804 2.804c.754.755 1.13 1.672 1.13 2.75z"/></svg></span></a></div><div class="heateorSssClear"></div></div><div class='heateorSssClear'></div>
300			
301		</div><!-- .entry-content -->
302
303		
304	</div><!-- .post-content -->
305
306	<footer class="entry-footer post-details">
307		<div class="entry-categories"> <svg class="icon icon-category" aria-hidden="true" role="img"> <use xlink:href="https://wojew.com/wp-content/themes/donovan/assets/icons/genericons-neue.svg#category"></use> </svg><a href="https://wojew.com/category/flutter/" rel="category tag">Flutter</a></div>
308			<div class="entry-tags clearfix">
309				<svg class="icon icon-tag" aria-hidden="true" role="img"> <use xlink:href="https://wojew.com/wp-content/themes/donovan/assets/icons/genericons-neue.svg#tag"></use> </svg><a href="https://wojew.com/tag/android/" rel="tag">android</a>, <a href="https://wojew.com/tag/android-studio/" rel="tag">android studio</a>, <a href="https://wojew.com/tag/basics/" rel="tag">basics</a>, <a href="https://wojew.com/tag/cupertino/" rel="tag">cupertino</a>, <a href="https://wojew.com/tag/dart/" rel="tag">dart</a>, <a href="https://wojew.com/tag/developer/" rel="tag">developer</a>, <a href="https://wojew.com/tag/flutter/" rel="tag">flutter</a>, <a href="https://wojew.com/tag/google/" rel="tag">google</a>, <a href="https://wojew.com/tag/i18n/" rel="tag">i18n</a>, <a href="https://wojew.com/tag/internationalizing/" rel="tag">Internationalizing</a>, <a href="https://wojew.com/tag/ios/" rel="tag">ios</a>, <a href="https://wojew.com/tag/iphone/" rel="tag">iphone</a>, <a href="https://wojew.com/tag/java/" rel="tag">java</a>, <a href="https://wojew.com/tag/javascript/" rel="tag">javascript</a>, <a href="https://wojew.com/tag/jezyk/" rel="tag">język</a>, <a href="https://wojew.com/tag/kotlin/" rel="tag">kotlin</a>, <a href="https://wojew.com/tag/localizations/" rel="tag">localizations</a>, <a href="https://wojew.com/tag/material-design/" rel="tag">material design</a>, <a href="https://wojew.com/tag/multilanguage/" rel="tag">multilanguage</a>, <a href="https://wojew.com/tag/poczatki/" rel="tag">początki</a>, <a href="https://wojew.com/tag/programming/" rel="tag">programming</a>, <a href="https://wojew.com/tag/programowanie/" rel="tag">programowanie</a>, <a href="https://wojew.com/tag/swift/" rel="tag">swift</a>, <a href="https://wojew.com/tag/ui/" rel="tag">ui</a>, <a href="https://wojew.com/tag/ux/" rel="tag">ux</a>, <a href="https://wojew.com/tag/visual-studio-code/" rel="tag">visual studio code</a>, <a href="https://wojew.com/tag/vs-code/" rel="tag">vs code</a>, <a href="https://wojew.com/tag/wojew/" rel="tag">wojew</a>, <a href="https://wojew.com/tag/xcode/" rel="tag">xcode</a>			</div><!-- .entry-tags -->
310
311				</footer><!-- .entry-footer -->
312
313</article>
314
315	<nav class="navigation post-navigation" aria-label="Wpisy">
316		<h2 class="screen-reader-text">Nawigacja wpisu</h2>
317		<div class="nav-links"><div class="nav-previous"><a href="https://wojew.com/flutter-bloc-praktyczne-uzycie-popularnego-wzorca-projektowego/" rel="prev"><span class="nav-link-text">Poprzedni wpis</span>
317<h3 class="entry-title">Flutter BLoC – praktyczne użycie popularnego wzorca projektowego</h3></a></div></div>
318	</nav>
319<div id="comments" class="comments-area">
320
321		<div id="respond" class="comment-respond">
322		<h3 id="reply-title" class="comment-reply-title">Dodaj komentarz <small><a rel="nofollow" id="cancel-comment-reply-link" href="/flutter-localizations-naucz-aplikacje-mowic-w-roznych-jezykach/#respond" style="display:none;">Anuluj pisanie odpowiedzi</a></small></h3><form action="https://wojew.com/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Twój adres e-mail nie zostanie opublikowany.</span> <span class="required-field-message">Wymagane pola są oznaczone <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">Komentarz <span class="required">*</span></label> <textarea autocomplete="new-password"  id="b5cbc67ab9"  name="b5cbc67ab9"   cols="45" rows="8" maxlength="65525" required></textarea><textarea id="comment" aria-label="hp-comment" aria-hidden="true" name="comment" autocomplete="new-password" style="padding:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;position:absolute !important;white-space:nowrap !important;height:1px !important;width:1px !important;overflow:hidden !important;" tabindex="-1"></textarea>
322<script data-noptimize>document.getElementById("comment").setAttribute( "id", "ab1b954cbe3778221eb1ee52d6653682" );document.getElementById("b5cbc67ab9").setAttribute( "id", "comment" );</script>
322</p><p class="comment-form-author"><label for="author">Nazwa <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p>
323<p class="comment-form-email"><label for="email">E-mail <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p>
324<p class="comment-form-url"><label for="url">Witryna internetowa</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p>
325<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Opublikuj komentarz" /> <input type='hidden' name='comment_post_ID' value='272' id='comment_post_ID' />
326<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
327</p></form>	</div><!-- #respond -->
328	
329</div><!-- #comments -->
330
331		</main><!-- #main -->
332	</div><!-- #primary -->
333
334
335	<section id="secondary" class="sidebar widget-area clearfix" role="complementary">
336
337		<section id="text-2" class="widget widget_text">			<div class="textwidget"><p><img loading="lazy" decoding="async" class="aligncenter wp-image-67 size-full" style="border-radius: 50%;" src="https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o.jpg" alt="" width="150" height="150" srcset="https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o.jpg 960w, https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o-300x300.jpg 300w, https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o-100x100.jpg 100w, https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o-600x600.jpg 600w, https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o-150x150.jpg 150w, https://wojew.com/wp-content/uploads/2020/05/57750904_2109849752385128_8822627484781510656_o-768x768.jpg 768w" sizes="(max-width: 150px) 100vw, 150px" /><br />
338Cześć! Hello! ¡Hola!</p>
339<p>I&#8217;m Wojtek Zahradnik, Mobile Developer from Gliwice, Poland. I&#8217;m coding using Kotlin, Swift, React-Native and Flutter. Beside programming I also like travelling and discover new places. Also love many kind of sports like football, squash, longboarding and windsurfing. In my free time I&#8217;m learning español &#8211; that&#8217;s why ¡Hola! appears on the beginning 🙂</p>
340<div style="width: auto; text-align: center;"><a style="margin: 3px;" href="https://www.youtube.com/channel/UCJf0tHVE_se1FzSw4qJC9NQ" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-71" src="https://wojew.com/wp-content/uploads/2020/05/iconfinder_youtube_1632538.png" alt="" width="30" height="30" /></a><a style="margin: 3px;" href="https://play.google.com/store/apps/dev?id=4694436615243552964" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-68" src="https://wojew.com/wp-content/uploads/2020/05/iconfinder_android_1632497-150x150.png" alt="" width="30" height="30" srcset="https://wojew.com/wp-content/uploads/2020/05/iconfinder_android_1632497-150x150.png 150w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_android_1632497-300x300.png 300w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_android_1632497-100x100.png 100w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_android_1632497.png 512w" sizes="(max-width: 30px) 100vw, 30px" /></a><a style="margin: 3px;" href="https://github.com/Wojew" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-69" src="https://wojew.com/wp-content/uploads/2020/05/iconfinder_github_1632512-150x150.png" alt="" width="30" height="30" srcset="https://wojew.com/wp-content/uploads/2020/05/iconfinder_github_1632512-150x150.png 150w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_github_1632512-300x300.png 300w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_github_1632512-100x100.png 100w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_github_1632512.png 512w" sizes="(max-width: 30px) 100v
340w, 30px" /></a><a style="margin: 3px;" href="http://instagram.com/wojthinio" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-70" src="https://wojew.com/wp-content/uploads/2020/05/iconfinder_instagram_1632517-150x150.png" alt="" width="30" height="30" srcset="https://wojew.com/wp-content/uploads/2020/05/iconfinder_instagram_1632517-150x150.png 150w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_instagram_1632517-300x300.png 300w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_instagram_1632517-100x100.png 100w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_instagram_1632517.png 512w" sizes="(max-width: 30px) 100vw, 30px" /></a><a style="margin: 3px;" href="https://www.linkedin.com/in/wojciech-zahradnik-51510b150/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-71" src="https://wojew.com/wp-content/uploads/2020/05/iconfinder_linkedin_1632521-150x150.png" alt="" width="30" height="30" srcset="https://wojew.com/wp-content/uploads/2020/05/iconfinder_linkedin_1632521-150x150.png 150w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_linkedin_1632521-300x300.png 300w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_linkedin_1632521-100x100.png 100w, https://wojew.com/wp-content/uploads/2020/05/iconfinder_linkedin_1632521.png 512w" sizes="(max-width: 30px) 100vw, 30px" /></a></div>
341</div>
342		</section>
343	</section><!-- #secondary -->
344
345
346	</div><!-- #content -->
347
348	
349	<div id="footer" class="footer-wrap">
350
351		<footer id="colophon" class="site-footer container clearfix" role="contentinfo">
352
353			
354			<div id="footer-line" class="site-info">
355								
356		<span class="credit-link">
357			Motyw WordPress: Donovan autorstwa ThemeZee.		</span>
358
359					</div><!-- .site-info -->
360
361		</footer><!-- #colophon -->
362
363	</div>
364
365</div><!-- #page -->
366
367<script type="text/javascript" id="donovan-navigation-js-extra">
368/* <![CDATA[ */
369var donovanScreenReaderText = {"expand":"Rozwi\u0144 menu potomne","collapse":"Zwi\u0144 menu potomne","icon":"<svg class=\"icon icon-expand\" aria-hidden=\"true\" role=\"img\"> <use xlink:href=\"https:\/\/wojew.com\/wp-content\/themes\/donovan\/assets\/icons\/genericons-neue.svg#expand\"><\/use> <\/svg>"};
370/* ]]> */
371</script>
vendor: 1 bytes, line 371
371
372<script type="text/javascript" src="https://wojew.com/wp-content/themes/donovan/assets/js/navigation.min.js?ver=20220224" id="donovan-navigation-js"></script>
vendor: 1 bytes, line 372
372
373<script type="text/javascript" src="https://wojew.com/wp-includes/js/comment-reply.min.js?ver=6.6.9" id="comment-reply-js" async="async" data-wp-strategy="async"></script>
vendor: 1 bytes, line 373
373
374<script type="text/javascript" id="heateor_sss_sharing_js-js-before">
375/* <![CDATA[ */
376function heateorSssLoadEvent(e) {var t=window.onload;if (typeof window.onload!="function") {window.onload=e}else{window.onload=function() {t();e()}}};	var heateorSssSharingAjaxUrl = 'https://wojew.com/wp-admin/admin-ajax.php', heateorSssCloseIconPath = 'https://wojew.com/wp-content/plugins/sassy-social-share/public/../images/close.png', heateorSssPluginIconPath = 'https://wojew.com/wp-content/plugins/sassy-social-share/public/../images/logo.png', heateorSssHorizontalSharingCountEnable = 0, heateorSssVerticalSharingCountEnable = 0, heateorSssSharingOffset = -10; var heateorSssMobileStickySharingEnabled = 0;var heateorSssCopyLinkMessage = "Link skopiowany";var heateorSssUrlCountFetched = [], heateorSssSharesText = 'Udostępnienia', heateorSssShareText = 'Udostępnij';function heateorSssPopup(e) {window.open(e,"popUpWindow","height=400,width=600,left=400,top=100,resizable,scrollbars,toolbar=0,personalbar=0,menubar=no,location=no,directories=no,status")}
377/* ]]> */
378</script>
vendor: 1 bytes, line 378
378
379<script type="text/javascript" src="https://wojew.com/wp-content/plugins/sassy-social-share/public/js/sassy-social-share-public.js?ver=3.3.79" id="heateor_sss_sharing_js-js"></script>
379
380
381</body>
382</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.