{"id":1309,"date":"2025-10-17T07:25:03","date_gmt":"2025-10-17T07:25:03","guid":{"rendered":"https:\/\/razvanvancea.ro\/blog\/?p=1309"},"modified":"2025-10-17T07:39:41","modified_gmt":"2025-10-17T07:39:41","slug":"internationalization-i18n-in-test-automation","status":"publish","type":"post","link":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/","title":{"rendered":"Internationalization (i18n) &#8211; in test automation"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1309\" class=\"elementor elementor-1309\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-64be535 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"64be535\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-460d662\" data-id=\"460d662\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2ca5beb elementor-widget elementor-widget-text-editor\" data-id=\"2ca5beb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).<br \/><br \/>Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided by application an internationalization mechanism (i18n) into your automation design.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a502ecf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a502ecf\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ac45db9\" data-id=\"ac45db9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d4fbf96 elementor-widget elementor-widget-heading\" data-id=\"d4fbf96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What is i18n?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-575b52e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"575b52e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f2175a\" data-id=\"2f2175a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-162ae48 elementor-widget elementor-widget-text-editor\" data-id=\"162ae48\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The abbreviation i18n stands for internationalization &#8211; the number 18 represents the letters between &#8216;i&#8217; and &#8216;n&#8217;.\u00a0<br \/>In software, internationalization means preparing your application so it can easily be localized into different languages without changing the source code.<br \/><br \/>It means:<\/p><ul><li>extracting all user-visible texts into separate files (e.g. JSON files)<\/li><li>using semantic keys instead of hardcoded text<\/li><li>supporting dynamic language changes<\/li><li>keeping identical key structures across all languages<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0a11c2d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0a11c2d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-78ef076\" data-id=\"78ef076\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1bcf449 elementor-widget elementor-widget-heading\" data-id=\"1bcf449\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Folder structure example<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ecb158d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ecb158d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dd9a0f6\" data-id=\"dd9a0f6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7a01971 elementor-widget elementor-widget-text-editor\" data-id=\"7a01971\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A setup that I personally use is having a \/locales folder with .json files like this<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e0a000e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e0a000e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8b4df65\" data-id=\"8b4df65\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-363976c elementor-widget elementor-widget-image\" data-id=\"363976c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"116\" height=\"107\" src=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48.png\" class=\"attachment-large size-large wp-image-1311\" alt=\"locales\" srcset=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48.png 116w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48-24x22.png 24w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48-36x33.png 36w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48-48x44.png 48w\" sizes=\"(max-width: 116px) 100vw, 116px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4ed5ccf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4ed5ccf\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-27de74f\" data-id=\"27de74f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a51eedf elementor-widget elementor-widget-text-editor\" data-id=\"a51eedf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Each file contains the same keys but with translated values<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-19cce1f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"19cce1f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f4e96a\" data-id=\"2f4e96a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d3037ec elementor-widget elementor-widget-image\" data-id=\"d3037ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"348\" height=\"643\" src=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48.png\" class=\"attachment-large size-large wp-image-1312\" alt=\"\" srcset=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48.png 348w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48-162x300.png 162w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48-300x554.png 300w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48-13x24.png 13w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48-19x36.png 19w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.30.48-26x48.png 26w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8500a6f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8500a6f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fed47bd\" data-id=\"fed47bd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1bcfbcb elementor-widget elementor-widget-heading\" data-id=\"1bcfbcb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The problem with text-based selectors<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c201070 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c201070\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9080f4a\" data-id=\"9080f4a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-477ca31 elementor-widget elementor-widget-text-editor\" data-id=\"477ca31\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Let&#8217;s imagine your current test locates the login button like this\u00a0<\/p><p>await $(&#8216;\/\/android.widget.TextView[@text=&#8221;Autentificare&#8221;]&#8217;).click();<\/p><p>It works fine in Romanian language &#8211; but as soon as the app switches to english\/french, the visible text changes to &#8220;Login&#8221; or &#8220;Conexxion&#8221;.<\/p><p>Conclusion: Your test fails, even though the functionality works perfectly.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e40959e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e40959e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-43ebe4b\" data-id=\"43ebe4b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9716ab4 elementor-widget elementor-widget-heading\" data-id=\"9716ab4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The solution<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f69a05d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f69a05d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9ed9155\" data-id=\"9ed9155\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5cc84da elementor-widget elementor-widget-text-editor\" data-id=\"5cc84da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>Instead of searching by visible plain text, design your selectors to use i18n keys - the ones defined in our \/locales .json files.<br \/><br \/>For example:<br \/>await $(`<code>\/\/android.widget.TextView[@text=\"${i18n.login.button}\"]`<\/code>).click();<\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-44e2160 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"44e2160\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ce53d6a\" data-id=\"ce53d6a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c5f98dd elementor-widget elementor-widget-heading\" data-id=\"c5f98dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Benefits<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-209ec7f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"209ec7f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9f296f0\" data-id=\"9f296f0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7786f67 elementor-widget elementor-widget-text-editor\" data-id=\"7786f67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Stable tests:<\/strong> changing the UI no longer breaks your tests<br \/><br \/><strong>Lower maintenance:<\/strong> no need to update text-based locators with every translation update<br \/><br \/><strong>Cross-locale compatibility:<\/strong> the same suite runs across all supported languages<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5bc4891 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5bc4891\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-43a99c5\" data-id=\"43a99c5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-054edbf elementor-widget elementor-widget-heading\" data-id=\"054edbf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1e2b502 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1e2b502\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-feeca5a\" data-id=\"feeca5a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-220b1a0 elementor-widget elementor-widget-text-editor\" data-id=\"220b1a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>By adopting i18n approach into your tests, you will create a robust, maintainable, and language-agnostic automation framework.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>This approach is about keeping tests stable when the application switches between multiple languages (e.g&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-1309","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Razvan Vancea\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Learn with RV - Tech Blog - #testautomation #qa #programming #linux #devops\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-10-17T07:25:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-10-17T07:39:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/razvanvancea\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@RazvanVancea\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@RazvanVancea\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#blogposting\",\"name\":\"Internationalization (i18n) \\u2013 in test automation - Learn with RV - Tech Blog\",\"headline\":\"Internationalization (i18n) &#8211; in test automation\",\"author\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/author\\\/iamrv\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Screenshot-2025-10-17-at-10.29.48.png\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#articleImage\",\"width\":116,\"height\":107,\"caption\":\"locales\"},\"datePublished\":\"2025-10-17T07:25:03+00:00\",\"dateModified\":\"2025-10-17T07:39:41+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#webpage\"},\"articleSection\":\"Uncategorized\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/category\\\/uncategorized\\\/#listItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/category\\\/uncategorized\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#listItem\",\"name\":\"Internationalization (i18n) &#8211; in test automation\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#listItem\",\"position\":3,\"name\":\"Internationalization (i18n) &#8211; in test automation\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/#person\",\"name\":\"RV\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#personImage\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/91ce41471f9ba5f15b3ef99e7deed87c.jpg?ver=1785997097\",\"width\":96,\"height\":96,\"caption\":\"RV\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/razvanvancea\\\/\",\"https:\\\/\\\/twitter.com\\\/RazvanVancea\",\"https:\\\/\\\/www.youtube.com\\\/@LearnwithRV\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/razvanvancea\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/author\\\/iamrv\\\/#author\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/author\\\/iamrv\\\/\",\"name\":\"Razvan Vancea\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#authorImage\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/356548feb901191539c03dd4a0498f58.jpg?ver=1785997099\",\"width\":96,\"height\":96,\"caption\":\"Razvan Vancea\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#webpage\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/\",\"name\":\"Internationalization (i18n) \\u2013 in test automation - Learn with RV - Tech Blog\",\"description\":\"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/2025\\\/10\\\/17\\\/internationalization-i18n-in-test-automation\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/author\\\/iamrv\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/author\\\/iamrv\\\/#author\"},\"datePublished\":\"2025-10-17T07:25:03+00:00\",\"dateModified\":\"2025-10-17T07:39:41+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/\",\"name\":\"Learn with RV - Tech Blog\",\"description\":\"#testautomation #qa #programming #linux #devops\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/razvanvancea.ro\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog","description":"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided","canonical_url":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#blogposting","name":"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog","headline":"Internationalization (i18n) &#8211; in test automation","author":{"@id":"https:\/\/razvanvancea.ro\/blog\/author\/iamrv\/#author"},"publisher":{"@id":"https:\/\/razvanvancea.ro\/blog\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-17-at-10.29.48.png","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#articleImage","width":116,"height":107,"caption":"locales"},"datePublished":"2025-10-17T07:25:03+00:00","dateModified":"2025-10-17T07:39:41+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#webpage"},"isPartOf":{"@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#webpage"},"articleSection":"Uncategorized"},{"@type":"BreadcrumbList","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/razvanvancea.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/#listItem","name":"Uncategorized"}},{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/#listItem","position":2,"name":"Uncategorized","item":"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/","nextItem":{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#listItem","name":"Internationalization (i18n) &#8211; in test automation"},"previousItem":{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#listItem","position":3,"name":"Internationalization (i18n) &#8211; in test automation","previousItem":{"@type":"ListItem","@id":"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/#listItem","name":"Uncategorized"}}]},{"@type":"Person","@id":"https:\/\/razvanvancea.ro\/blog\/#person","name":"RV","image":{"@type":"ImageObject","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#personImage","url":"https:\/\/razvanvancea.ro\/blog\/wp-content\/litespeed\/avatar\/91ce41471f9ba5f15b3ef99e7deed87c.jpg?ver=1785997097","width":96,"height":96,"caption":"RV"},"sameAs":["https:\/\/www.facebook.com\/razvanvancea\/","https:\/\/twitter.com\/RazvanVancea","https:\/\/www.youtube.com\/@LearnwithRV","https:\/\/www.linkedin.com\/in\/razvanvancea"]},{"@type":"Person","@id":"https:\/\/razvanvancea.ro\/blog\/author\/iamrv\/#author","url":"https:\/\/razvanvancea.ro\/blog\/author\/iamrv\/","name":"Razvan Vancea","image":{"@type":"ImageObject","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#authorImage","url":"https:\/\/razvanvancea.ro\/blog\/wp-content\/litespeed\/avatar\/356548feb901191539c03dd4a0498f58.jpg?ver=1785997099","width":96,"height":96,"caption":"Razvan Vancea"}},{"@type":"WebPage","@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#webpage","url":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/","name":"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog","description":"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/razvanvancea.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/#breadcrumblist"},"author":{"@id":"https:\/\/razvanvancea.ro\/blog\/author\/iamrv\/#author"},"creator":{"@id":"https:\/\/razvanvancea.ro\/blog\/author\/iamrv\/#author"},"datePublished":"2025-10-17T07:25:03+00:00","dateModified":"2025-10-17T07:39:41+00:00"},{"@type":"WebSite","@id":"https:\/\/razvanvancea.ro\/blog\/#website","url":"https:\/\/razvanvancea.ro\/blog\/","name":"Learn with RV - Tech Blog","description":"#testautomation #qa #programming #linux #devops","inLanguage":"en-US","publisher":{"@id":"https:\/\/razvanvancea.ro\/blog\/#person"}}]},"og:locale":"en_US","og:site_name":"Learn with RV - Tech Blog - #testautomation #qa #programming #linux #devops","og:type":"article","og:title":"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog","og:description":"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided","og:url":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/","article:published_time":"2025-10-17T07:25:03+00:00","article:modified_time":"2025-10-17T07:39:41+00:00","article:publisher":"https:\/\/www.facebook.com\/razvanvancea","twitter:card":"summary_large_image","twitter:site":"@RazvanVancea","twitter:title":"Internationalization (i18n) \u2013 in test automation - Learn with RV - Tech Blog","twitter:description":"This approach is about keeping tests stable when the application switches between multiple languages (e.g. romanian, french, english, etc).Starting with the fact that nowadays applications support multiple languages (which is great for users!), for automation engineers it can quickly turn into a nightmare if the test selectors depend on visible text. This can be avoided","twitter:creator":"@RazvanVancea"},"aioseo_meta_data":{"post_id":"1309","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2025-10-17 07:21:04","updated":"2025-10-17 07:47:56","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/razvanvancea.ro\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/\" title=\"Uncategorized\">Uncategorized<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tInternationalization (i18n) \u2013 in test automation\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/razvanvancea.ro\/blog"},{"label":"Uncategorized","link":"https:\/\/razvanvancea.ro\/blog\/category\/uncategorized\/"},{"label":"Internationalization (i18n) &#8211; in test automation","link":"https:\/\/razvanvancea.ro\/blog\/2025\/10\/17\/internationalization-i18n-in-test-automation\/"}],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/comments?post=1309"}],"version-history":[{"count":4,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1309\/revisions"}],"predecessor-version":[{"id":1315,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1309\/revisions\/1315"}],"wp:attachment":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/media?parent=1309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/categories?post=1309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/tags?post=1309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}