{"id":36913,"date":"2026-05-17T21:47:52","date_gmt":"2026-05-17T18:47:52","guid":{"rendered":"https:\/\/kamil-abzalov.com\/?p=36913"},"modified":"2026-05-17T21:53:39","modified_gmt":"2026-05-17T18:53:39","slug":"angular-internationalization-ngx-translate","status":"publish","type":"post","link":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/","title":{"rendered":"Angular Internationalization. ngx-translate"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; admin_label=&#8221;Header&#8221; _builder_version=&#8221;4.20.0&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_direction=&#8221;163deg&#8221; background_color_gradient_stops=&#8221;rgba(0,0,0,0.02) 50%|#ffffff 50%&#8221; background_color_gradient_start=&#8221;rgba(0,0,0,0.02)&#8221; background_color_gradient_start_position=&#8221;50%&#8221; background_color_gradient_end=&#8221;#ffffff&#8221; background_color_gradient_end_position=&#8221;0%&#8221; background_image=&#8221;https:\/\/kamil-abzalov.com\/wp-content\/uploads\/2021\/12\/web-dev-03.png&#8221; parallax=&#8221;on&#8221; animation_style=&#8221;fade&#8221; collapsed=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_fullwidth_header title=&#8221;Angular Internationalization. ngx-translate&#8221; content_max_width=&#8221;640px&#8221; _builder_version=&#8221;4.27.6&#8243; title_font=&#8221;Roboto|700|||||||&#8221; title_line_height=&#8221;1.5em&#8221; content_font=&#8221;Roboto||||||||&#8221; content_font_size=&#8221;16px&#8221; content_line_height=&#8221;2em&#8221; subhead_font=&#8221;|700||on|||||&#8221; subhead_font_size=&#8221;14px&#8221; subhead_letter_spacing=&#8221;2px&#8221; subhead_line_height=&#8221;2em&#8221; background_color=&#8221;rgba(0,0,0,0)&#8221; custom_button_one=&#8221;on&#8221; button_one_text_size=&#8221;14px&#8221; button_one_text_color=&#8221;#ffffff&#8221; button_one_bg_color=&#8221;#0054ff&#8221; button_one_border_width=&#8221;14px&#8221; button_one_border_color=&#8221;rgba(0,0,0,0)&#8221; button_one_border_radius=&#8221;0px&#8221; button_one_letter_spacing=&#8221;2px&#8221; button_one_font=&#8221;|600||on|||||&#8221; button_one_icon=&#8221;&#x39;||divi||400&#8243; button_one_on_hover=&#8221;off&#8221; custom_button_two=&#8221;on&#8221; button_two_text_size=&#8221;14px&#8221; button_two_text_color=&#8221;#0054ff&#8221; button_two_bg_color=&#8221;rgba(255,255,255,0)&#8221; button_two_border_width=&#8221;12px&#8221; button_two_border_color=&#8221;rgba(0,0,0,0)&#8221; button_two_border_radius=&#8221;0px&#8221; button_two_letter_spacing=&#8221;2px&#8221; button_two_font=&#8221;|600||on|||||&#8221; button_two_icon=&#8221;&#x39;||divi||400&#8243; button_two_on_hover=&#8221;off&#8221; background_layout=&#8221;light&#8221; custom_margin=&#8221;|||&#8221; custom_padding=&#8221;6vw||6vw||false|false&#8221; animation_style=&#8221;zoom&#8221; animation_intensity_zoom=&#8221;-5%&#8221; title_font_size_tablet=&#8221;&#8221; title_font_size_phone=&#8221;25px&#8221; title_font_size_last_edited=&#8221;on|desktop&#8221; box_shadow_style_button_two=&#8221;preset1&#8243; box_shadow_vertical_button_two=&#8221;0px&#8221; box_shadow_blur_button_two=&#8221;0px&#8221; box_shadow_spread_button_two=&#8221;2px&#8221; box_shadow_color_button_two=&#8221;#0054ff&#8221; button_one_letter_spacing_hover=&#8221;2px&#8221; button_two_letter_spacing_hover=&#8221;2px&#8221; global_colors_info=&#8221;{}&#8221; button_one_text_size__hover_enabled=&#8221;off&#8221; button_two_text_size__hover_enabled=&#8221;off&#8221; button_one_text_color__hover_enabled=&#8221;off&#8221; button_two_text_color__hover_enabled=&#8221;off&#8221; button_one_border_width__hover_enabled=&#8221;off&#8221; button_two_border_width__hover_enabled=&#8221;off&#8221; button_one_border_color__hover_enabled=&#8221;off&#8221; button_two_border_color__hover_enabled=&#8221;off&#8221; button_one_border_radius__hover_enabled=&#8221;off&#8221; button_two_border_radius__hover_enabled=&#8221;off&#8221; button_one_letter_spacing__hover_enabled=&#8221;on&#8221; button_one_letter_spacing__hover=&#8221;2px&#8221; button_two_letter_spacing__hover_enabled=&#8221;on&#8221; button_two_letter_spacing__hover=&#8221;2px&#8221; button_one_bg_color__hover_enabled=&#8221;off&#8221; button_two_bg_color__hover_enabled=&#8221;off&#8221;][\/et_pb_fullwidth_header][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.21.2&#8243; _module_preset=&#8221;default&#8221; collapsed=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.21.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.21.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_dcsbcm_divi_breadcrumbs_module homebreadcrumbtext=&#8221;Home&#8221; hide_currentbreadcrumb=&#8221;off&#8221; _builder_version=&#8221;4.27.6&#8243; fontsbreadcrumbs_font_size_tablet=&#8221;51&#8243; fontsbreadcrumbs_line_height_tablet=&#8221;2&#8243; fontsseperator_font_size_tablet=&#8221;51&#8243; fontsseperator_line_height_tablet=&#8221;2&#8243; fontsbreadcrumblinks_font_size_tablet=&#8221;51&#8243; fontsbreadcrumblinks_line_height_tablet=&#8221;2&#8243; z_index_tablet=&#8221;500&#8243; fontsbreadcrumbs_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; fontsbreadcrumbs_text_shadow_vertical_length_tablet=&#8221;0px&#8221; fontsbreadcrumbs_text_shadow_blur_strength_tablet=&#8221;1px&#8221; fontsseperator_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; fontsseperator_text_shadow_vertical_length_tablet=&#8221;0px&#8221; fontsseperator_text_shadow_blur_strength_tablet=&#8221;1px&#8221; fontsbreadcrumblinks_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; fontsbreadcrumblinks_text_shadow_vertical_length_tablet=&#8221;0px&#8221; fontsbreadcrumblinks_text_shadow_blur_strength_tablet=&#8221;1px&#8221; box_shadow_horizontal_tablet=&#8221;0px&#8221; box_shadow_vertical_tablet=&#8221;0px&#8221; box_shadow_blur_tablet=&#8221;40px&#8221; box_shadow_spread_tablet=&#8221;0px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_dcsbcm_divi_breadcrumbs_module][et_pb_text _builder_version=&#8221;4.27.6&#8243; z_index_tablet=&#8221;500&#8243; text_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; text_text_shadow_vertical_length_tablet=&#8221;0px&#8221; text_text_shadow_blur_strength_tablet=&#8221;1px&#8221; link_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; link_text_shadow_vertical_length_tablet=&#8221;0px&#8221; link_text_shadow_blur_strength_tablet=&#8221;1px&#8221; ul_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; ul_text_shadow_vertical_length_tablet=&#8221;0px&#8221; ul_text_shadow_blur_strength_tablet=&#8221;1px&#8221; ol_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; ol_text_shadow_vertical_length_tablet=&#8221;0px&#8221; ol_text_shadow_blur_strength_tablet=&#8221;1px&#8221; quote_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; quote_text_shadow_vertical_length_tablet=&#8221;0px&#8221; quote_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_2_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_2_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_2_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_3_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_3_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_3_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_4_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_4_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_4_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_5_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_5_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_5_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_6_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_6_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_6_text_shadow_blur_strength_tablet=&#8221;1px&#8221; box_shadow_horizontal_tablet=&#8221;0px&#8221; box_shadow_vertical_tablet=&#8221;0px&#8221; box_shadow_blur_tablet=&#8221;40px&#8221; box_shadow_spread_tablet=&#8221;0px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>In this video, we will explore internationalization (i18n) in Angular. Internationalization is the process of adapting an application and its data to local standards and regional settings. For example, decimal separators, date formats, currencies, and more.<br \/>Angular has built-in i18n support through the @angular\/localize package. You can add this package to your project by running the command <strong>ng add @angular\/localize<\/strong>.<\/p>\n<p>[\/et_pb_text][et_pb_video src=&#8221;https:\/\/youtu.be\/kw9YxQMeTU0&#8243; disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.27.6&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][et_pb_text _builder_version=&#8221;4.27.6&#8243; z_index_tablet=&#8221;500&#8243; text_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; text_text_shadow_vertical_length_tablet=&#8221;0px&#8221; text_text_shadow_blur_strength_tablet=&#8221;1px&#8221; link_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; link_text_shadow_vertical_length_tablet=&#8221;0px&#8221; link_text_shadow_blur_strength_tablet=&#8221;1px&#8221; ul_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; ul_text_shadow_vertical_length_tablet=&#8221;0px&#8221; ul_text_shadow_blur_strength_tablet=&#8221;1px&#8221; ol_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; ol_text_shadow_vertical_length_tablet=&#8221;0px&#8221; ol_text_shadow_blur_strength_tablet=&#8221;1px&#8221; quote_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; quote_text_shadow_vertical_length_tablet=&#8221;0px&#8221; quote_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_2_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_2_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_2_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_3_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_3_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_3_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_4_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_4_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_4_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_5_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_5_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_5_text_shadow_blur_strength_tablet=&#8221;1px&#8221; header_6_text_shadow_horizontal_length_tablet=&#8221;0px&#8221; header_6_text_shadow_vertical_length_tablet=&#8221;0px&#8221; header_6_text_shadow_blur_strength_tablet=&#8221;1px&#8221; box_shadow_horizontal_tablet=&#8221;0px&#8221; box_shadow_vertical_tablet=&#8221;0px&#8221; box_shadow_blur_tablet=&#8221;40px&#8221; box_shadow_spread_tablet=&#8221;0px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>@angular\/localize allows you to create multilingual applications. However, a separate build is required for each language. In addition, translations are stored in specific XML-based .xlf files.<br \/>That is why many developers prefer the simpler and more popular solution \u2014 ngx-translate, which provides a powerful API for building multilingual Angular applications.<\/p>\n<p>[\/et_pb_text][et_pb_dmb_code_snippet title=&#8221;app.ts&#8221; code=&#8221;aW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsKaW1wb3J0IHsgTWF0VG9vbGJhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInOwppbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgUGVyY2VudFBpcGUsIHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7CmltcG9ydCBsb2NhbGVSdSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9ydSc7CmltcG9ydCBsb2NhbGVGciBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9mcic7CmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJzsKaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJzsKCnJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVSdSk7CnJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVGcik7CgpAQ29tcG9uZW50KHsKICBzZWxlY3RvcjogJ2FwcC1yb290JywKICBpbXBvcnRzOiBbTWF0VG9vbGJhciwgRGF0ZVBpcGUsIEN1cnJlbmN5UGlwZSwgRGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlLCBUcmFuc2xhdGVQaXBlLCBNYXRCdXR0b25dLAogIHRlbXBsYXRlVXJsOiAnLi9hcHAuaHRtbCcsCiAgc3R5bGVVcmw6ICcuL2FwcC5zY3NzJywKfSkKZXhwb3J0IGNsYXNzIEFwcCB7CiAgcHJvdGVjdGVkIHRvZGF5ID0gbmV3IERhdGUoKTsKCiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7CgogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy50cmFuc2xhdGUuYWRkTGFuZ3MoWydlbicsICdydSddKTsKICAgIHRoaXMudHJhbnNsYXRlLnNldEZhbGxiYWNrTGFuZygnZW4nKTsKICAgIHRoaXMudHJhbnNsYXRlLnVzZSgnZW4nKTsKICB9CgogIHByb3RlY3RlZCBjaGFuZ2VMYW5nKCkgewogICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMudHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCkgPT09ICdlbicgPyAncnUnIDogJ2VuJyk7CiAgfQp9Cg==&#8221; copy_button=&#8221;on&#8221; copy_button_tooltip=&#8221;Copy code&#8221; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=&#8221;app.html&#8221; code=&#8221;PGhlYWRlcj4KICA8bWF0LXRvb2xiYXIgY29sb3I9InByaW1hcnkiPgogICAgPHNwYW4+e3snQVBQLlRJVExFJyB8IHRyYW5zbGF0ZX19PC9zcGFuPgogIDwvbWF0LXRvb2xiYXI+CjwvaGVhZGVyPgoKPHA+RGF0ZToge3t0b2RheSB8IGRhdGUgOiAnTU1NIGQsIHksIEhIOm1tOnNzIGEnOiAnKzAyMDAnIDogJ2ZyJ319PC9wPgoKPHA+Q3VycmVuY3k6IHt7MTI1IHwgY3VycmVuY3kgOiAnRVVSJyA6ICdzeW1ib2wtbmFycm93JyA6ICAnMS4xLTEnIDogJ2ZyJ319PC9wPgoKPHA+TnVtYmVyOiB7ezEyLjQ1IHwgbnVtYmVyIDogJzEuMS0xJyA6ICdmcid9fTwvcD4KCjxwPlBlcmNlbnQ6IHt7MC4yNSB8IHBlcmNlbnQgOiAnMS4wJyA6ICdydSd9fTwvcD4KCgo8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0iY2hhbmdlTGFuZygpIj5DaGFuZyBsYW5nPC9idXR0b24+&#8221; copy_button=&#8221;on&#8221; copy_button_tooltip=&#8221;Copy code&#8221; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=&#8221;app.config.ts&#8221; code=&#8221;aW1wb3J0IHsKICBBcHBsaWNhdGlvbkNvbmZpZywKICBJbmplY3Rpb25Ub2tlbiwKICBwcm92aWRlQnJvd3Nlckdsb2JhbEVycm9yTGlzdGVuZXJzLAogIHByb3ZpZGVab25lbGVzc0NoYW5nZURldGVjdGlvbgp9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnOwppbXBvcnQgeyBwcm92aWRlUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJzsKCmltcG9ydCB7IHJvdXRlcyB9IGZyb20gJy4vYXBwLnJvdXRlcyc7CmltcG9ydCB7IHByb3ZpZGVUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7CmltcG9ydCB7IHByb3ZpZGVUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvaHR0cC1sb2FkZXInOwoKZXhwb3J0IGNvbnN0IEFQSV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQVBJX1VSTCcpOwoKZXhwb3J0IGNvbnN0IGFwcENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7CiAgcHJvdmlkZXJzOiBbCiAgICBwcm92aWRlQnJvd3Nlckdsb2JhbEVycm9yTGlzdGVuZXJzKCksCiAgICBwcm92aWRlWm9uZWxlc3NDaGFuZ2VEZXRlY3Rpb24oKSwKICAgIHByb3ZpZGVSb3V0ZXIocm91dGVzKSwKICAgIHByb3ZpZGVUcmFuc2xhdGVTZXJ2aWNlKHsKICAgICAgbG9hZGVyOiBwcm92aWRlVHJhbnNsYXRlSHR0cExvYWRlcih7CiAgICAgICAgcHJlZml4OiAnL2kxOG4vJywKICAgICAgICBzdWZmaXg6ICcuanNvbicsCiAgICAgIH0pLAogICAgICBmYWxsYmFja0xhbmc6ICdlbicsCiAgICAgIGxhbmc6ICdlbicsCiAgICB9KSwKICAgIHsgcHJvdmlkZTogQVBJX1VSTCwgdXNlVmFsdWU6ICdodHRwczovL2pzb25wbGFjZWhvbGRlci50eXBpY29kZS5jb20vJyB9LAogIF0sCn07Cg==&#8221; copy_button=&#8221;on&#8221; copy_button_tooltip=&#8221;Copy code&#8221; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_dmb_code_snippet][et_pb_comments _builder_version=&#8221;4.21.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_comments][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this video, we will explore internationalization (i18n) in Angular. Internationalization is the process of adapting an application and its data to local standards and regional settings. For example, decimal separators, date formats, currencies, and more.Angular has built-in i18n support through the @angular\/localize package. You can add this package to your project by running the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[256,219],"tags":[],"class_list":["post-36913","post","type-post","status-publish","format-standard","hentry","category-javascript","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Angular Internationalization. ngx-translate - Kamil Abzalov&#039;s site<\/title>\n<meta name=\"description\" content=\"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular Internationalization. ngx-translate\" \/>\n<meta property=\"og:description\" content=\"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/kamabzalov\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-17T18:47:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-17T18:53:39+00:00\" \/>\n<meta name=\"author\" content=\"Kamil&#039; Abzalov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@kamabzalov\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kamil&#039; Abzalov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/\"},\"author\":{\"name\":\"Kamil' Abzalov\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\"},\"headline\":\"Angular Internationalization. ngx-translate\",\"datePublished\":\"2026-05-17T18:47:52+00:00\",\"dateModified\":\"2026-05-17T18:53:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/\"},\"wordCount\":1705,\"commentCount\":0,\"articleSection\":[\"JavaScript\",\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/\",\"url\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/\",\"name\":\"Angular Internationalization. ngx-translate - Kamil Abzalov's site\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#website\"},\"datePublished\":\"2026-05-17T18:47:52+00:00\",\"dateModified\":\"2026-05-17T18:53:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\"},\"description\":\"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/tutorials\\\/javascript\\\/angular-internationalization-ngx-translate\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angular Internationalization. ngx-translate\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#website\",\"url\":\"https:\\\/\\\/kamil-abzalov.com\\\/\",\"name\":\"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kamil-abzalov.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\",\"name\":\"Kamil' Abzalov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"caption\":\"Kamil' Abzalov\"},\"sameAs\":[\"https:\\\/\\\/kamil-abzalov.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/kamabzalov\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/kamabzalov\",\"https:\\\/\\\/x.com\\\/kamabzalov\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/kamabzalov\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Angular Internationalization. ngx-translate - Kamil Abzalov's site","description":"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/","og_locale":"en_US","og_type":"article","og_title":"Angular Internationalization. ngx-translate","og_description":"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.","og_url":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/","og_site_name":"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","article_author":"https:\/\/www.facebook.com\/kamabzalov","article_published_time":"2026-05-17T18:47:52+00:00","article_modified_time":"2026-05-17T18:53:39+00:00","author":"Kamil' Abzalov","twitter_card":"summary_large_image","twitter_creator":"@kamabzalov","twitter_misc":{"Written by":"Kamil' Abzalov","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/#article","isPartOf":{"@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/"},"author":{"name":"Kamil' Abzalov","@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600"},"headline":"Angular Internationalization. ngx-translate","datePublished":"2026-05-17T18:47:52+00:00","dateModified":"2026-05-17T18:53:39+00:00","mainEntityOfPage":{"@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/"},"wordCount":1705,"commentCount":0,"articleSection":["JavaScript","Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/","url":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/","name":"Angular Internationalization. ngx-translate - Kamil Abzalov's site","isPartOf":{"@id":"https:\/\/kamil-abzalov.com\/#website"},"datePublished":"2026-05-17T18:47:52+00:00","dateModified":"2026-05-17T18:53:39+00:00","author":{"@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600"},"description":"Learn how to add internationalization to an Angular application with ngx-translate: translation setup, dynamic language switching, lazy loading, and best practices for application localization.","breadcrumb":{"@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kamil-abzalov.com\/en\/tutorials\/javascript\/angular-internationalization-ngx-translate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/kamil-abzalov.com\/en\/"},{"@type":"ListItem","position":2,"name":"Angular Internationalization. ngx-translate"}]},{"@type":"WebSite","@id":"https:\/\/kamil-abzalov.com\/#website","url":"https:\/\/kamil-abzalov.com\/","name":"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kamil-abzalov.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600","name":"Kamil' Abzalov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","caption":"Kamil' Abzalov"},"sameAs":["https:\/\/kamil-abzalov.com\/","https:\/\/www.facebook.com\/kamabzalov","https:\/\/www.linkedin.com\/in\/kamabzalov","https:\/\/x.com\/kamabzalov","https:\/\/www.youtube.com\/user\/kamabzalov"]}]}},"_links":{"self":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/36913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/comments?post=36913"}],"version-history":[{"count":9,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/36913\/revisions"}],"predecessor-version":[{"id":36939,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/36913\/revisions\/36939"}],"wp:attachment":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/media?parent=36913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/categories?post=36913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/tags?post=36913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}