[go: nahoru, domu]

Move most strings to resources for showcase app.

Bug: 211212469
Test: Manual
Change-Id: Ideb8b79f614b81c2a7108d591f46d80366311f72
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/SelectableListsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/SelectableListsDemoScreen.java
index 8521109..0a53e69 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/SelectableListsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/SelectableListsDemoScreen.java
@@ -55,21 +55,33 @@
                                                                         .ic_fastfood_white_48dp))
                                                         .build(),
                                                 Row.IMAGE_TYPE_ICON)
-                                        .setTitle("Option 1")
-                                        .addText("Some additional text")
+                                        .setTitle(
+                                                getCarContext().getString(R.string.option_1_title))
+                                        .addText(getCarContext().getString(
+                                                R.string.some_additional_text))
                                         .build())
-                        .addItem(new Row.Builder().setTitle("Option 2").build())
-                        .addItem(new Row.Builder().setTitle("Option 3").build())
+                        .addItem(new Row.Builder().setTitle(
+                                getCarContext().getString(R.string.option_2_title)).build())
+                        .addItem(new Row.Builder().setTitle(
+                                getCarContext().getString(R.string.option_3_title)).build())
                         .setOnSelectedListener(this::onSelected)
                         .build();
         templateBuilder.addSectionedList(
-                SectionedItemList.create(radioList, "Sample selectable list"));
+                SectionedItemList.create(radioList,
+                        getCarContext().getString(R.string.sample_additional_list)));
 
-        return templateBuilder.setTitle("Selectable Lists Demo").setHeaderAction(BACK).build();
+        return templateBuilder
+                .setTitle(getCarContext().getString(R.string.selectable_lists_demo_title))
+                .setHeaderAction(
+                        BACK).build();
     }
 
     private void onSelected(int index) {
-        CarToast.makeText(getCarContext(), "Changed selection to index: " + index, LENGTH_LONG)
+        CarToast.makeText(getCarContext(),
+                        getCarContext()
+                                .getString(R.string.changes_selection_to_index_toast_msg_prefix)
+                                + ":"
+                                + " " + index, LENGTH_LONG)
                 .show();
     }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/StartScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/StartScreen.java
index 19344b0..63ba613 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/StartScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/StartScreen.java
@@ -48,7 +48,7 @@
         ItemList.Builder listBuilder = new ItemList.Builder();
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Selectable Lists Demo")
+                        .setTitle(getCarContext().getString(R.string.selectable_lists_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -58,7 +58,7 @@
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Task Restriction Demo")
+                        .setTitle(getCarContext().getString(R.string.task_restriction_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -75,7 +75,7 @@
                                                 R.drawable.ic_map_white_48dp))
                                         .build(),
                                 Row.IMAGE_TYPE_ICON)
-                        .setTitle("Navigation Demos")
+                        .setTitle(getCarContext().getString(R.string.nav_demos_title))
                         .setOnClickListener(
                                 () -> getScreenManager()
                                         .push(new NavigationDemosScreen(getCarContext())))
@@ -90,7 +90,7 @@
         int miscTemplateDemoScreenItemLimit = listLimit;
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Misc Templates Demos")
+                        .setTitle(getCarContext().getString(R.string.misc_templates_demos_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -102,7 +102,7 @@
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Text and Icons Demos")
+                        .setTitle(getCarContext().getString(R.string.text_icons_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -111,7 +111,7 @@
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Misc Demos")
+                        .setTitle(getCarContext().getString(R.string.misc_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -121,7 +121,7 @@
                         .build());
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Showcase Demos")
+                .setTitle(getCarContext().getString(R.string.showcase_demos_title))
                 .setHeaderAction(Action.APP_ICON)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java
index 8992b7f..9adf0c7 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java
@@ -64,11 +64,12 @@
                                             mIsBackOperation = true);
 
             return new MessageTemplate.Builder(
-                    "Task limit reached\nGoing forward will force stop the app")
+                    getCarContext().getString(R.string.task_limit_reached_msg))
                     .setHeaderAction(BACK)
                     .addAction(
                             new Action.Builder()
-                                    .setTitle("Try Anyway")
+                                    .setTitle(getCarContext().getString(
+                                            R.string.try_anyway_action_title))
                                     .setOnClickListener(onClickListener)
                                     .build())
                     .build();
@@ -76,21 +77,23 @@
 
         ItemList.Builder builder = new ItemList.Builder();
         builder.addItem(
-                new Row.Builder()
-                        .setTitle("Task step " + mStep + " of " + MAX_STEPS_ALLOWED)
-                        .addText("Click to go forward")
-                        .setOnClickListener(
-                                () ->
-                                        getScreenManager()
-                                                .pushForResult(
-                                                        new TaskRestrictionDemoScreen(
-                                                                mStep + 1, getCarContext()),
-                                                        result -> mIsBackOperation = true))
-                        .build())
+                        new Row.Builder()
+                                .setTitle(getCarContext().getString(R.string.task_step_of_title,
+                                        mStep,
+                                        MAX_STEPS_ALLOWED))
+                                .addText(getCarContext().getString(R.string.task_step_of_text))
+                                .setOnClickListener(
+                                        () ->
+                                                getScreenManager()
+                                                        .pushForResult(
+                                                                new TaskRestrictionDemoScreen(
+                                                                        mStep + 1, getCarContext()),
+                                                                result -> mIsBackOperation = true))
+                                .build())
                 .addItem(
                         new Row.Builder()
-                                .setTitle("Toggle test")
-                                .addText("Stateful changes are allowed")
+                                .setTitle(getCarContext().getString(R.string.toggle_test_title))
+                                .addText(getCarContext().getString(R.string.toggle_test_text))
                                 .setToggle(
                                         new Toggle.Builder(
                                                 checked -> {
@@ -102,8 +105,8 @@
                                 .build())
                 .addItem(
                         new Row.Builder()
-                                .setTitle("Image test")
-                                .addText("Image changes are allowed")
+                                .setTitle(getCarContext().getString(R.string.image_test_title))
+                                .addText(getCarContext().getString(R.string.image_test_text))
                                 .setImage(
                                         new CarIcon.Builder(
                                                 IconCompat.createWithResource(
@@ -124,20 +127,21 @@
         if (mIsBackOperation) {
             builder.addItem(
                     new Row.Builder()
-                            .setTitle("Additional Data")
-                            .addText("Updates allows on back operations.")
+                            .setTitle(getCarContext().getString(R.string.additional_data_title))
+                            .addText(getCarContext().getString(R.string.additional_data_text))
                             .build());
         }
 
         return new ListTemplate.Builder()
                 .setSingleList(builder.build())
-                .setTitle("Task Restriction Demo")
+                .setTitle(getCarContext().getString(R.string.task_restriction_demo_title))
                 .setHeaderAction(BACK)
                 .setActionStrip(
                         new ActionStrip.Builder()
                                 .addAction(
                                         new Action.Builder()
-                                                .setTitle("HOME")
+                                                .setTitle(getCarContext().getString(
+                                                        R.string.home_caps_action_title))
                                                 .setOnClickListener(
                                                         () -> getScreenManager().popToRoot())
                                                 .build())
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/PlaceDetailsScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/PlaceDetailsScreen.java
index 6125f04..d0f0d11 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/PlaceDetailsScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/PlaceDetailsScreen.java
@@ -33,11 +33,17 @@
 import androidx.car.app.model.PaneTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** A screen that displays the details of a place. */
 public class PlaceDetailsScreen extends Screen {
     private final PlaceInfo mPlace;
 
+    private PlaceDetailsScreen(@NonNull CarContext carContext, @NonNull PlaceInfo place) {
+        super(carContext);
+        mPlace = place;
+    }
+
     /** Creates an instance of {@link PlaceDetailsScreen}. */
     @NonNull
     public static PlaceDetailsScreen create(
@@ -52,23 +58,23 @@
                 new Pane.Builder()
                         .addAction(
                                 new Action.Builder()
-                                        .setTitle("Navigate")
+                                        .setTitle(getCarContext().getString(R.string.navigate))
                                         .setBackgroundColor(CarColor.BLUE)
                                         .setOnClickListener(this::onClickNavigate)
                                         .build())
                         .addAction(
                                 new Action.Builder()
-                                        .setTitle("Dial")
+                                        .setTitle(getCarContext().getString(R.string.dial))
                                         .setOnClickListener(this::onClickDial)
                                         .build())
                         .addRow(
                                 new Row.Builder()
-                                        .setTitle("Address")
+                                        .setTitle(getCarContext().getString(R.string.address))
                                         .addText(mPlace.address)
                                         .build())
                         .addRow(
                                 new Row.Builder()
-                                        .setTitle("Phone")
+                                        .setTitle(getCarContext().getString(R.string.phone))
                                         .addText(mPlace.phoneNumber)
                                         .build());
 
@@ -86,9 +92,9 @@
             getCarContext().startCarApp(intent);
         } catch (HostException e) {
             CarToast.makeText(
-                    getCarContext(),
-                    "Failure starting navigation",
-                    LENGTH_LONG)
+                            getCarContext(),
+                            getCarContext().getString(R.string.fail_start_nav),
+                            LENGTH_LONG)
                     .show();
         }
     }
@@ -101,15 +107,10 @@
             getCarContext().startCarApp(intent);
         } catch (HostException e) {
             CarToast.makeText(
-                    getCarContext(),
-                    "Failure starting dialer",
-                    LENGTH_LONG)
+                            getCarContext(),
+                            getCarContext().getString(R.string.fail_start_dialer),
+                            LENGTH_LONG)
                     .show();
         }
     }
-
-    private PlaceDetailsScreen(@NonNull CarContext carContext, @NonNull PlaceInfo place) {
-        super(carContext);
-        mPlace = place;
-    }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/SamplePlaces.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/SamplePlaces.java
index d502dd9..aa6b979 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/SamplePlaces.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/common/SamplePlaces.java
@@ -55,12 +55,191 @@
     private final List<PlaceInfo> mPlaces;
     private final Screen mDemoScreen;
 
+    private SamplePlaces(Screen demoScreen) {
+        mDemoScreen = demoScreen;
+
+        CarContext carContext = demoScreen.getCarContext();
+
+        mAnchorLocation = new Location("ShowcaseDemo");
+        mAnchorLocation.setLatitude(47.6204588);
+        mAnchorLocation.setLongitude(-122.1918818);
+
+        mPlaces = getSamplePlaces(carContext);
+    }
+
     /** Create an instance of {@link SamplePlaces}. */
     @NonNull
     public static SamplePlaces create(@NonNull Screen demoScreen) {
         return new SamplePlaces(demoScreen);
     }
 
+    /**
+     * Returns the list of sample places.
+     *
+     * <p>We use a few Google locations around the Seattle area, using different types of markers to
+     * showcase those options. The "description" field of each place describes the type of marker
+     * itself.
+     */
+    private static List<PlaceInfo> getSamplePlaces(@NonNull CarContext carContext) {
+        List<PlaceInfo> places = new ArrayList<>();
+
+        Location location1 = new Location(SamplePlaces.class.getSimpleName());
+        location1.setLatitude(47.6696482);
+        location1.setLongitude(-122.19950278);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_1_title),
+                        carContext.getString(R.string.location_1_address),
+                        carContext.getString(R.string.location_1_description),
+                        carContext.getString(R.string.location_1_phone),
+                        location1,
+                        new PlaceMarker.Builder()
+                                .setIcon(
+                                        new CarIcon.Builder(
+                                                IconCompat.createWithResource(
+                                                        carContext,
+                                                        R.drawable.ic_commute_24px))
+                                                .setTint(CarColor.BLUE)
+                                                .build(),
+                                        PlaceMarker.TYPE_ICON)
+                                .build()));
+
+        Location location2 = new Location(SamplePlaces.class.getSimpleName());
+        location2.setLatitude(47.6204588);
+        location2.setLongitude(-122.1918818);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_2_title),
+                        carContext.getString(R.string.location_2_address),
+                        carContext.getString(R.string.location_2_description),
+                        carContext.getString(R.string.location_2_phone),
+                        location2,
+                        new PlaceMarker.Builder()
+                                .setIcon(
+                                        new CarIcon.Builder(
+                                                IconCompat.createWithResource(
+                                                        carContext, R.drawable.ic_520))
+                                                .build(),
+                                        PlaceMarker.TYPE_IMAGE)
+                                .build()));
+
+        Location location3 = new Location(SamplePlaces.class.getSimpleName());
+        location3.setLatitude(47.625567);
+        location3.setLongitude(-122.336427);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_3_title),
+                        carContext.getString(R.string.location_3_address),
+                        carContext.getString(R.string.location_3_description),
+                        carContext.getString(R.string.location_3_phone),
+                        location3,
+                        new PlaceMarker.Builder().setLabel("SLU").setColor(CarColor.RED).build()));
+
+        Location location4 = new Location(SamplePlaces.class.getSimpleName());
+        location4.setLatitude(47.6490374);
+        location4.setLongitude(-122.3527127);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_4_title),
+                        carContext.getString(R.string.location_4_address),
+                        carContext.getString(R.string.location_4_description),
+                        carContext.getString(R.string.location_4_phone),
+                        location4,
+                        new PlaceMarker.Builder()
+                                .setIcon(
+                                        new CarIcon.Builder(
+                                                IconCompat.createWithBitmap(
+                                                        BitmapFactory.decodeResource(
+                                                                carContext.getResources(),
+                                                                R.drawable.banana)))
+                                                .build(),
+                                        PlaceMarker.TYPE_IMAGE)
+                                .build()));
+
+        Location location5 = new Location(SamplePlaces.class.getSimpleName());
+        location5.setLatitude(37.422014);
+        location5.setLongitude(-122.084776);
+        SpannableString title5 = new SpannableString(" ");
+        title5.setSpan(CarIconSpan.create(new CarIcon.Builder(
+                        IconCompat.createWithBitmap(
+                                BitmapFactory.decodeResource(
+                                        carContext.getResources(),
+                                        R.drawable.ic_hi)))
+                        .build(), CarIconSpan.ALIGN_BOTTOM),
+                0,
+                1,
+                Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+        SpannableString description5 = new SpannableString(" ");
+        places.add(
+                new PlaceInfo(
+                        title5,
+                        carContext.getString(R.string.location_5_address),
+                        description5,
+                        carContext.getString(R.string.location_5_phone),
+                        location5,
+                        new PlaceMarker.Builder()
+                                .setIcon(
+                                        new CarIcon.Builder(
+                                                IconCompat.createWithBitmap(
+                                                        BitmapFactory.decodeResource(
+                                                                carContext.getResources(),
+                                                                R.drawable.test_image_square)))
+                                                .build(),
+                                        PlaceMarker.TYPE_IMAGE)
+                                .build()));
+
+        Location location6 = new Location(SamplePlaces.class.getSimpleName());
+        location6.setLatitude(47.6490374);
+        location6.setLongitude(-122.3527127);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_6_title),
+                        carContext.getString(R.string.location_6_address),
+                        carContext.getString(R.string.location_description_text_label),
+                        carContext.getString(R.string.location_phone_not_available),
+                        location6,
+                        new PlaceMarker.Builder().build()));
+
+        // Some hosts may display more items in the list than others, so create 3 more items.
+        Location location7 = new Location(SamplePlaces.class.getSimpleName());
+        location7.setLatitude(47.5496056);
+        location7.setLongitude(-122.2571713);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_7_title),
+                        carContext.getString(R.string.location_7_address),
+                        carContext.getString(R.string.location_description_text_label),
+                        carContext.getString(R.string.location_phone_not_available),
+                        location7,
+                        new PlaceMarker.Builder().build()));
+
+        Location location8 = new Location(SamplePlaces.class.getSimpleName());
+        location8.setLatitude(47.5911456);
+        location8.setLongitude(-122.2256602);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_8_title),
+                        carContext.getString(R.string.location_8_address),
+                        carContext.getString(R.string.location_description_text_label),
+                        carContext.getString(R.string.location_phone_not_available),
+                        location8,
+                        new PlaceMarker.Builder().build()));
+
+        Location location9 = new Location(SamplePlaces.class.getSimpleName());
+        location9.setLatitude(47.6785932);
+        location9.setLongitude(-122.2113821);
+        places.add(
+                new PlaceInfo(
+                        carContext.getString(R.string.location_9_title),
+                        carContext.getString(R.string.location_9_address),
+                        carContext.getString(R.string.location_description_text_label),
+                        carContext.getString(R.string.location_phone_not_available),
+                        location9,
+                        new PlaceMarker.Builder().build()));
+
+        return places;
+    }
+
     /** Return the {@link ItemList} of the sample places. */
     @NonNull
     public ItemList getPlaceList() {
@@ -140,183 +319,4 @@
                 .getScreenManager()
                 .push(PlaceDetailsScreen.create(mDemoScreen.getCarContext(), place));
     }
-
-    private SamplePlaces(Screen demoScreen) {
-        mDemoScreen = demoScreen;
-
-        CarContext carContext = demoScreen.getCarContext();
-
-        mAnchorLocation = new Location("ShowcaseDemo");
-        mAnchorLocation.setLatitude(47.6204588);
-        mAnchorLocation.setLongitude(-122.1918818);
-
-        mPlaces = getSamplePlaces(carContext);
-    }
-
-    /**
-     * Returns the list of sample places.
-     *
-     * <p>We use a few Google locations around the Seattle area, using different types of markers to
-     * showcase those options. The "description" field of each place describes the type of marker
-     * itself.
-     */
-    private static List<PlaceInfo> getSamplePlaces(@NonNull CarContext carContext) {
-        List<PlaceInfo> places = new ArrayList<>();
-
-        Location location1 = new Location(SamplePlaces.class.getSimpleName());
-        location1.setLatitude(47.6696482);
-        location1.setLongitude(-122.19950278);
-        places.add(
-                new PlaceInfo(
-                        "Google Kirkland",
-                        "747 6th St South, Kirkland, WA 98033",
-                        "Tinted resource vector",
-                        "+14257395600",
-                        location1,
-                        new PlaceMarker.Builder()
-                                .setIcon(
-                                        new CarIcon.Builder(
-                                                IconCompat.createWithResource(
-                                                        carContext,
-                                                        R.drawable.ic_commute_24px))
-                                                .setTint(CarColor.BLUE)
-                                                .build(),
-                                        PlaceMarker.TYPE_ICON)
-                                .build()));
-
-        Location location2 = new Location(SamplePlaces.class.getSimpleName());
-        location2.setLatitude(47.6204588);
-        location2.setLongitude(-122.1918818);
-        places.add(
-                new PlaceInfo(
-                        "Google Bellevue",
-                        "1120 112th Ave NE, Bellevue, WA 98004",
-                        "Image resource bitmap",
-                        "+14252301301",
-                        location2,
-                        new PlaceMarker.Builder()
-                                .setIcon(
-                                        new CarIcon.Builder(
-                                                IconCompat.createWithResource(
-                                                        carContext, R.drawable.ic_520))
-                                                .build(),
-                                        PlaceMarker.TYPE_IMAGE)
-                                .build()));
-
-        Location location3 = new Location(SamplePlaces.class.getSimpleName());
-        location3.setLatitude(47.625567);
-        location3.setLongitude(-122.336427);
-        places.add(
-                new PlaceInfo(
-                        "Google South Lake Union",
-                        "1021 Valley St, Seattle, WA 98109",
-                        "Colored text marker",
-                        "+12065311800",
-                        location3,
-                        new PlaceMarker.Builder().setLabel("SLU").setColor(CarColor.RED).build()));
-
-        Location location4 = new Location(SamplePlaces.class.getSimpleName());
-        location4.setLatitude(47.6490374);
-        location4.setLongitude(-122.3527127);
-        places.add(
-                new PlaceInfo(
-                        "Google Seattle",
-                        "601 N 34th St, Seattle, WA 98103",
-                        "Image bitmap",
-                        "+12068761800",
-                        location4,
-                        new PlaceMarker.Builder()
-                                .setIcon(
-                                        new CarIcon.Builder(
-                                                IconCompat.createWithBitmap(
-                                                        BitmapFactory.decodeResource(
-                                                                carContext.getResources(),
-                                                                R.drawable.banana)))
-                                                .build(),
-                                        PlaceMarker.TYPE_IMAGE)
-                                .build()));
-
-        Location location5 = new Location(SamplePlaces.class.getSimpleName());
-        location5.setLatitude(37.422014);
-        location5.setLongitude(-122.084776);
-        SpannableString title5 = new SpannableString(" ");
-        title5.setSpan(CarIconSpan.create(new CarIcon.Builder(
-                IconCompat.createWithBitmap(
-                        BitmapFactory.decodeResource(
-                                carContext.getResources(),
-                                R.drawable.ic_hi)))
-                .build(), CarIconSpan.ALIGN_BOTTOM),
-                0,
-                1,
-                Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        SpannableString description5 = new SpannableString(" ");
-        places.add(
-                new PlaceInfo(
-                        title5,
-                        "1600 Amphitheatre Pkwy, Mountain View, CA 94043",
-                        description5,
-                        "+16502530000",
-                        location5,
-                        new PlaceMarker.Builder()
-                                .setIcon(
-                                        new CarIcon.Builder(
-                                                IconCompat.createWithBitmap(
-                                                        BitmapFactory.decodeResource(
-                                                                carContext.getResources(),
-                                                                R.drawable.test_image_square)))
-                                                .build(),
-                                        PlaceMarker.TYPE_IMAGE)
-                                .build()));
-
-        Location location6 = new Location(SamplePlaces.class.getSimpleName());
-        location6.setLatitude(47.6490374);
-        location6.setLongitude(-122.3527127);
-        places.add(
-                new PlaceInfo(
-                        "Google Bothell",
-                        "11831 North Creek Pkwy, Bothell, WA 98011",
-                        "Text label",
-                        "n/a",
-                        location6,
-                        new PlaceMarker.Builder().build()));
-
-        // Some hosts may display more items in the list than others, so create 3 more items.
-        Location location7 = new Location(SamplePlaces.class.getSimpleName());
-        location7.setLatitude(47.5496056);
-        location7.setLongitude(-122.2571713);
-        places.add(
-                new PlaceInfo(
-                        "Seward Park",
-                        "5900 Lake Washington Blvd S, Seattle, WA 98118",
-                        "Text label",
-                        "n/a",
-                        location7,
-                        new PlaceMarker.Builder().build()));
-
-        Location location8 = new Location(SamplePlaces.class.getSimpleName());
-        location8.setLatitude(47.5911456);
-        location8.setLongitude(-122.2256602);
-        places.add(
-                new PlaceInfo(
-                        "Luther Burbank Park",
-                        "2040 84th Ave SE, Mercer Island, WA 98040",
-                        "Text label",
-                        "n/a",
-                        location8,
-                        new PlaceMarker.Builder().build()));
-
-        Location location9 = new Location(SamplePlaces.class.getSimpleName());
-        location9.setLatitude(47.6785932);
-        location9.setLongitude(-122.2113821);
-        places.add(
-                new PlaceInfo(
-                        "Heritage Park",
-                        "111 Waverly Way, Kirkland, WA 98033",
-                        "Text label",
-                        "n/a",
-                        location9,
-                        new PlaceMarker.Builder().build()));
-
-        return places;
-    }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareDemoScreen.java
index b1e1e09..de76440 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareDemoScreen.java
@@ -81,7 +81,8 @@
                                 .build())
                         .addAction(
                                 new Action.Builder()
-                                        .setTitle("BACK")
+                                        .setTitle(getCarContext()
+                                                .getString(R.string.back_caps_action_title))
                                         .setOnClickListener(this::finish)
                                         .build())
                         .build();
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareInfoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareInfoScreen.java
index 2c125e2..9140932 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareInfoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/CarHardwareInfoScreen.java
@@ -33,6 +33,7 @@
 import androidx.car.app.model.PaneTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.core.content.ContextCompat;
 import androidx.lifecycle.DefaultLifecycleObserver;
 import androidx.lifecycle.Lifecycle;
@@ -124,25 +125,27 @@
         Pane.Builder paneBuilder = new Pane.Builder();
         if (allInfoAvailable()) {
             Row.Builder modelRowBuilder = new Row.Builder()
-                    .setTitle("Model Information");
+                    .setTitle(getCarContext().getString(R.string.model_info));
             if (!mHasModelPermission) {
-                modelRowBuilder.addText("No Model Permission.");
+                modelRowBuilder.addText(getCarContext().getString(R.string.no_model_permission));
             } else {
                 StringBuilder info = new StringBuilder();
                 if (mModel.getManufacturer().getStatus() != CarValue.STATUS_SUCCESS) {
-                    info.append("Manufacturer unavailable, ");
+                    info.append(getCarContext().getString(R.string.manufacturer_unavailable));
+                    info.append(", ");
                 } else {
                     info.append(mModel.getManufacturer().getValue());
                     info.append(", ");
                 }
                 if (mModel.getName().getStatus() != CarValue.STATUS_SUCCESS) {
-                    info.append("Model unavailable, ");
+                    info.append(getCarContext().getString(R.string.model_unavailable));
+                    info.append(", ");
                 } else {
                     info.append(mModel.getName().getValue());
                     info.append(", ");
                 }
                 if (mModel.getYear().getStatus() != CarValue.STATUS_SUCCESS) {
-                    info.append("Year unavailable");
+                    info.append(getCarContext().getString(R.string.year_unavailable));
                 } else {
                     info.append(mModel.getYear().getValue());
                 }
@@ -151,15 +154,19 @@
             paneBuilder.addRow(modelRowBuilder.build());
 
             Row.Builder energyProfileRowBuilder = new Row.Builder()
-                    .setTitle("Energy Profile");
+                    .setTitle(getCarContext().getString(R.string.energy_profile));
             if (!mHasEnergyProfilePermission) {
-                energyProfileRowBuilder.addText("No Energy Profile Permission.");
+                energyProfileRowBuilder.addText(getCarContext()
+                        .getString(R.string.no_energy_profile_permission));
             } else {
                 StringBuilder fuelInfo = new StringBuilder();
                 if (mEnergyProfile.getFuelTypes().getStatus() != CarValue.STATUS_SUCCESS) {
-                    fuelInfo.append("Fuel Types: Unavailable.");
+                    fuelInfo.append(getCarContext().getString(R.string.fuel_types));
+                    fuelInfo.append(": ");
+                    fuelInfo.append(getCarContext().getString(R.string.unavailable));
                 } else {
-                    fuelInfo.append("Fuel Types: ");
+                    fuelInfo.append(getCarContext().getString(R.string.fuel_types));
+                    fuelInfo.append(": ");
                     for (int fuelType : mEnergyProfile.getFuelTypes().getValue()) {
                         fuelInfo.append(fuelTypeAsString(fuelType));
                         fuelInfo.append(" ");
@@ -168,9 +175,13 @@
                 energyProfileRowBuilder.addText(fuelInfo);
                 StringBuilder evInfo = new StringBuilder();
                 if (mEnergyProfile.getEvConnectorTypes().getStatus() != CarValue.STATUS_SUCCESS) {
-                    evInfo.append(" EV Connector Types: Unavailable.");
+                    evInfo.append(" ");
+                    evInfo.append(getCarContext().getString(R.string.ev_connector_types));
+                    evInfo.append(": ");
+                    evInfo.append(getCarContext().getString(R.string.unavailable));
                 } else {
-                    evInfo.append("EV Connector Types: ");
+                    evInfo.append(getCarContext().getString(R.string.ev_connector_types));
+                    evInfo.append(": ");
                     for (int connectorType : mEnergyProfile.getEvConnectorTypes().getValue()) {
                         evInfo.append(evConnectorAsString(connectorType));
                         evInfo.append(" ");
@@ -184,7 +195,7 @@
         }
         return new PaneTemplate.Builder(paneBuilder.build())
                 .setHeaderAction(Action.BACK)
-                .setTitle("Car Hardware Information")
+                .setTitle(getCarContext().getString(R.string.car_hardware_info))
                 .build();
     }
 
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ColorDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ColorDemoScreen.java
index e638b72..a447320 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ColorDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ColorDemoScreen.java
@@ -49,8 +49,9 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 1")
-                        .addText(Utils.colorize("This text has a red color", RED, 16, 3))
+                        .setTitle(getCarContext().getString(R.string.example_title, 1))
+                        .addText(Utils.colorize(getCarContext().getString(R.string.example_1_text),
+                                RED, 16, 3))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -61,8 +62,9 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 2")
-                        .addText(Utils.colorize("This text has a green color", GREEN, 16, 5))
+                        .setTitle(getCarContext().getString(R.string.example_title, 2))
+                        .addText(Utils.colorize(getCarContext().getString(R.string.example_2_text),
+                                GREEN, 16, 5))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -73,8 +75,9 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 3")
-                        .addText(Utils.colorize("This text has a blue color", BLUE, 16, 4))
+                        .setTitle(getCarContext().getString(R.string.example_title, 3))
+                        .addText(Utils.colorize(getCarContext().getString(R.string.example_3_text),
+                                BLUE, 16, 4))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -85,8 +88,9 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 4")
-                        .addText(Utils.colorize("This text has a yellow color", YELLOW, 16, 6))
+                        .setTitle(getCarContext().getString(R.string.example_title, 4))
+                        .addText(Utils.colorize(getCarContext().getString(R.string.example_4_text),
+                                YELLOW, 16, 6))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -97,8 +101,9 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 5")
-                        .addText(Utils.colorize("This text uses the primary color", PRIMARY, 19, 7))
+                        .setTitle(getCarContext().getString(R.string.example_title, 5))
+                        .addText(Utils.colorize(getCarContext().getString(R.string.example_5_text),
+                                PRIMARY, 19, 7))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -109,10 +114,11 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Example 6")
+                        .setTitle(getCarContext().getString(R.string.example_title, 6))
                         .addText(
                                 Utils.colorize(
-                                        "This text uses the secondary color", SECONDARY, 19, 9))
+                                        getCarContext().getString(R.string.example_6_text),
+                                        SECONDARY, 19, 9))
                         .setImage(new CarIcon.Builder(
                                 IconCompat.createWithResource(
                                         getCarContext(),
@@ -123,7 +129,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Color Demo")
+                .setTitle(getCarContext().getString(R.string.color_demo))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ContentLimitsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ContentLimitsDemoScreen.java
index 9f3e853..d50f284 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ContentLimitsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ContentLimitsDemoScreen.java
@@ -26,6 +26,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /**
  * A {@link Screen} that shows examples on how to query for various content limits via the
@@ -44,31 +45,31 @@
         ItemList.Builder listBuilder = new ItemList.Builder();
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("List Limit")
+                        .setTitle(getCarContext().getString(R.string.list_limit))
                         .addText(Integer.toString(manager.getContentLimit(
                                 ConstraintManager.CONTENT_LIMIT_TYPE_LIST)))
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Grid Limit")
+                        .setTitle(getCarContext().getString(R.string.grid_limit))
                         .addText(Integer.toString(manager.getContentLimit(
                                 ConstraintManager.CONTENT_LIMIT_TYPE_GRID)))
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Pane Limit")
+                        .setTitle(getCarContext().getString(R.string.pane_limit))
                         .addText(Integer.toString(manager.getContentLimit(
                                 ConstraintManager.CONTENT_LIMIT_TYPE_PANE)))
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Place List Limit")
+                        .setTitle(getCarContext().getString(R.string.place_list_limit))
                         .addText(Integer.toString(manager.getContentLimit(
                                 ConstraintManager.CONTENT_LIMIT_TYPE_PLACE_LIST)))
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Route List Limit")
+                        .setTitle(getCarContext().getString(R.string.route_list_limit))
                         .addText(Integer.toString(manager.getContentLimit(
                                 ConstraintManager.CONTENT_LIMIT_TYPE_ROUTE_LIST)))
                         .build());
@@ -76,7 +77,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Content Limits")
+                .setTitle(getCarContext().getString(R.string.content_limits))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/FinishAppScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/FinishAppScreen.java
index b7d239b..2466224 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/FinishAppScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/FinishAppScreen.java
@@ -26,6 +26,7 @@
 import androidx.car.app.model.Action;
 import androidx.car.app.model.MessageTemplate;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.sample.showcase.common.ShowcaseService;
 
 /** A {@link Screen} that provides an action to exit the car app. */
@@ -37,10 +38,8 @@
     @NonNull
     @Override
     public Template onGetTemplate() {
-        return new MessageTemplate.Builder(
-                "This will finish the app, and when you return it will pre-seed a permission "
-                        + "screen")
-                .setTitle("Finish App Demo")
+        return new MessageTemplate.Builder(getCarContext().getString(R.string.finish_app_msg))
+                .setTitle(getCarContext().getString(R.string.finish_app_title))
                 .setHeaderAction(BACK)
                 .addAction(
                         new Action.Builder()
@@ -56,7 +55,7 @@
                                                     .apply();
                                             getCarContext().finishCarApp();
                                         })
-                                .setTitle("Exit")
+                                .setTitle(getCarContext().getString(R.string.exit_action_title))
                                 .build())
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/LoadingDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/LoadingDemoScreen.java
index 6af04ed..1c23c76 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/LoadingDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/LoadingDemoScreen.java
@@ -28,6 +28,7 @@
 import androidx.car.app.model.PaneTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.lifecycle.DefaultLifecycleObserver;
 import androidx.lifecycle.LifecycleOwner;
 
@@ -62,11 +63,13 @@
         if (!mIsFinishedLoading) {
             paneBuilder.setLoading(true);
         } else {
-            paneBuilder.addRow(new Row.Builder().setTitle("Loading Complete!").build());
+            paneBuilder.addRow(new Row.Builder()
+                    .setTitle(getCarContext().getString(R.string.loading_demo_row_title))
+                    .build());
         }
 
         return new PaneTemplate.Builder(paneBuilder.build())
-                .setTitle("Loading Demo")
+                .setTitle(getCarContext().getString(R.string.loading_demo_title))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/MiscDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/MiscDemoScreen.java
index 034eb41..06ae337 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/MiscDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/MiscDemoScreen.java
@@ -27,6 +27,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.sample.showcase.common.ShowcaseSession;
 
 /** Creates a screen that has an assortment of API demos. */
@@ -59,23 +60,28 @@
 
         switch (mPage) {
             case 0:
-                listBuilder.addItem(createRow("Notification Demo",
+                listBuilder.addItem(createRow(getCarContext().getString(R.string.notification_demo),
                         new NotificationDemoScreen(getCarContext())));
-                listBuilder.addItem(createRow("PopTo Demo",
+                listBuilder.addItem(createRow(getCarContext().getString(R.string.pop_to_title),
                         new PopToDemoScreen(getCarContext())));
-                listBuilder.addItem(createRow("Loading Demo",
-                        new LoadingDemoScreen(getCarContext())));
-                listBuilder.addItem(createRow("Request Permission Demo",
-                        new RequestPermissionScreen(getCarContext())));
-                listBuilder.addItem(createRow("Pre-seed the Screen backstack on next run Demo",
-                        new FinishAppScreen(getCarContext())));
-                listBuilder.addItem(createRow("Car Hardware Demo",
-                        new CarHardwareDemoScreen(getCarContext(), mShowcaseSession)));
+                listBuilder.addItem(
+                        createRow(getCarContext().getString(R.string.loading_demo_title),
+                                new LoadingDemoScreen(getCarContext())));
+                listBuilder.addItem(
+                        createRow(getCarContext().getString(R.string.request_permissions_title),
+                                new RequestPermissionScreen(getCarContext())));
+                listBuilder.addItem(
+                        createRow(getCarContext().getString(R.string.finish_app_demo_title),
+                                new FinishAppScreen(getCarContext())));
+                listBuilder.addItem(
+                        createRow(getCarContext().getString(R.string.car_hardware_demo_title),
+                                new CarHardwareDemoScreen(getCarContext(), mShowcaseSession)));
                 break;
             case 1:
-                listBuilder.addItem(createRow("Content Limits Demo",
-                        new ContentLimitsDemoScreen(getCarContext())));
-                listBuilder.addItem(createRow("Color Demo",
+                listBuilder.addItem(
+                        createRow(getCarContext().getString(R.string.content_limits_demo_title),
+                                new ContentLimitsDemoScreen(getCarContext())));
+                listBuilder.addItem(createRow(getCarContext().getString(R.string.color_demo),
                         new ColorDemoScreen(getCarContext())));
                 break;
 
@@ -83,13 +89,13 @@
 
         ListTemplate.Builder builder = new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Misc Demos")
+                .setTitle(getCarContext().getString(R.string.misc_demo_title))
                 .setHeaderAction(BACK);
 
         if (mPage + 1 < MAX_PAGES) {
             builder.setActionStrip(new ActionStrip.Builder()
                     .addAction(new Action.Builder()
-                            .setTitle("More")
+                            .setTitle(getCarContext().getString(R.string.more_action_title))
                             .setOnClickListener(() -> {
                                 getScreenManager().push(
                                         new MiscDemoScreen(getCarContext(), mShowcaseSession,
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
index 7951ef1..a233245 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
@@ -57,44 +57,39 @@
 /** A simple screen that demonstrates how to use notifications in a car app. */
 public final class NotificationDemoScreen extends Screen implements DefaultLifecycleObserver {
 
+    static final long NOTIFICATION_DELAY_IN_MILLIS = SECONDS.toMillis(1);
     private static final String NOTIFICATION_CHANNEL_ID = "channel_00";
     private static final CharSequence NOTIFICATION_CHANNEL_NAME = "Default Channel";
     private static final int NOTIFICATION_ID = 1001;
-
     private static final String NOTIFICATION_CHANNEL_HIGH_ID = "channel_01";
     private static final CharSequence NOTIFICATION_CHANNEL_HIGH_NAME = "High Channel";
-
     private static final String NOTIFICATION_CHANNEL_LOW_ID = "channel_02";
     private static final CharSequence NOTIFICATION_CHANNEL_LOW_NAME = "Low Channel";
-
     private static final String INTENT_ACTION_PRIMARY_PHONE =
             "androidx.car.app.sample.showcase.common.INTENT_ACTION_PRIMARY_PHONE";
     private static final String INTENT_ACTION_SECONDARY_PHONE =
             "androidx.car.app.sample.showcase.common.INTENT_ACTION_SECONDARY_PHONE";
-
     private static final int MSG_SEND_NOTIFICATION = 1;
-
-    static final long NOTIFICATION_DELAY_IN_MILLIS = SECONDS.toMillis(1);
     final Handler mHandler = new Handler(Looper.getMainLooper(), new HandlerCallback());
 
     private final IconCompat mIcon = IconCompat.createWithResource(getCarContext(),
             R.drawable.ic_face_24px);
-    private int mImportance = NotificationManager.IMPORTANCE_DEFAULT;
-    private boolean mIsNavCategory = false;
-    private boolean mSetOngoing = false;
-    private int mNotificationCount = 0;
-
     /** A broadcast receiver that can show a toast message upon receiving a broadcast. */
     private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             CarToast.makeText(
-                    getCarContext(),
-                    "Triggered: " + intent.getAction(),
-                    CarToast.LENGTH_SHORT)
+                            getCarContext(),
+                            getCarContext().getString(R.string.triggered_toast_msg) + ": "
+                                    + intent.getAction(),
+                            CarToast.LENGTH_SHORT)
                     .show();
         }
     };
+    private int mImportance = NotificationManager.IMPORTANCE_DEFAULT;
+    private boolean mIsNavCategory = false;
+    private boolean mSetOngoing = false;
+    private int mNotificationCount = 0;
 
     public NotificationDemoScreen(@NonNull CarContext carContext) {
         super(carContext);
@@ -121,7 +116,7 @@
         // Send a single notification with the settings configured by other buttons.
         listBuilder.addItem(
                 new GridItem.Builder()
-                        .setTitle("Send a notification")
+                        .setTitle(getCarContext().getString(R.string.send_notification_title))
                         .setImage(new CarIcon.Builder(mIcon).build())
                         .setOnClickListener(this::sendNotification)
                         .build());
@@ -129,7 +124,7 @@
         // Start a repeating notification with the settings configured by other buttons.
         listBuilder.addItem(
                 new GridItem.Builder()
-                        .setTitle("Start notifications")
+                        .setTitle(getCarContext().getString(R.string.start_notifications_title))
                         .setImage(new CarIcon.Builder(mIcon).build())
                         .setOnClickListener(() -> mHandler.sendMessage(
                                 mHandler.obtainMessage(MSG_SEND_NOTIFICATION)))
@@ -138,7 +133,7 @@
         // Stop the repeating notification and reset the count.
         listBuilder.addItem(
                 new GridItem.Builder()
-                        .setTitle("Stop notifications")
+                        .setTitle(getCarContext().getString(R.string.stop_notifications_title))
                         .setImage(new CarIcon.Builder(mIcon).build())
                         .setOnClickListener(() -> {
                             mHandler.removeMessages(MSG_SEND_NOTIFICATION);
@@ -151,7 +146,7 @@
         listBuilder.addItem(
                 new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build())
-                        .setTitle("Importance")
+                        .setTitle(getCarContext().getString(R.string.importance_title))
                         .setText(getImportanceString())
                         .setOnClickListener(() -> {
                             setImportance();
@@ -163,7 +158,7 @@
         listBuilder.addItem(
                 new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build())
-                        .setTitle("Category")
+                        .setTitle(getCarContext().getString(R.string.category_title))
                         .setText(getCategoryString())
                         .setOnClickListener(() -> {
                             mIsNavCategory = !mIsNavCategory;
@@ -175,7 +170,7 @@
         listBuilder.addItem(
                 new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build())
-                        .setTitle("Ongoing")
+                        .setTitle(getCarContext().getString(R.string.ongoing_title))
                         .setText(String.valueOf(mSetOngoing))
                         .setOnClickListener(() -> {
                             mSetOngoing = !mSetOngoing;
@@ -185,15 +180,19 @@
 
         return new GridTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Notification Demo")
+                .setTitle(getCarContext().getString(R.string.notification_demo))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
 
     void sendNotification() {
         mNotificationCount++;
-        String title = "Notification: " + getImportanceString() + ", " + mNotificationCount;
-        String text = "Category: " + getCategoryString() + ", ongoing: " + mSetOngoing;
+        String title =
+                getCarContext().getString(R.string.notification_title) + ": "
+                        + getImportanceString() + ", " + mNotificationCount;
+        String text = getCarContext().getString(R.string.category_title) + ": "
+                + getCategoryString() + ", "
+                + getCarContext().getString(R.string.ongoing_title) + ": " + mSetOngoing;
 
         switch (mImportance) {
             case NotificationManager.IMPORTANCE_HIGH:
@@ -269,11 +268,11 @@
                                                 R.drawable.ic_hi))
                                 .addAction(
                                         R.drawable.ic_commute_24px,
-                                        "Navigate",
+                                        getCarContext().getString(R.string.navigate),
                                         getPendingIntentForNavigation())
                                 .addAction(
                                         R.drawable.ic_face_24px,
-                                        "Call",
+                                        getCarContext().getString(R.string.call_action_title),
                                         createPendingIntentForCall())
                                 .build());
 
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/PopToDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/PopToDemoScreen.java
index 78bff01..06b3699 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/PopToDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/PopToDemoScreen.java
@@ -25,6 +25,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /**
  * A {@link Screen} that allows you to push deeper in the screen stack, or pop to previous marker,
@@ -48,17 +49,17 @@
         ItemList.Builder listBuilder = new ItemList.Builder();
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Pop to root")
+                        .setTitle(getCarContext().getString(R.string.pop_to_root))
                         .setOnClickListener(() -> getScreenManager().popToRoot())
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Pop to Misc Demo Marker")
+                        .setTitle(getCarContext().getString(R.string.pop_to_marker))
                         .setOnClickListener(() -> getScreenManager().popTo(MiscDemoScreen.MARKER))
                         .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Push further in stack")
+                        .setTitle(getCarContext().getString(R.string.push_stack))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -69,7 +70,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Pop To " + mId)
+                .setTitle(getCarContext().getString(R.string.pop_to_prefix) + mId)
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/RequestPermissionScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/RequestPermissionScreen.java
index 7f9e70d..95db90e 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/RequestPermissionScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/RequestPermissionScreen.java
@@ -37,6 +37,7 @@
 import androidx.car.app.model.OnClickListener;
 import androidx.car.app.model.ParkedOnlyOnClickListener;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.core.location.LocationManagerCompat;
 
 import java.util.ArrayList;
@@ -63,7 +64,7 @@
      * the permissions that need to be granted.
      */
     private final Action mRefreshAction = new Action.Builder()
-            .setTitle("Refresh")
+            .setTitle(getCarContext().getString(R.string.refresh_action_title))
             .setBackgroundColor(CarColor.BLUE)
             .setOnClickListener(this::invalidate)
             .build();
@@ -91,7 +92,8 @@
                             PackageManager.GET_PERMISSIONS);
             declaredPermissions = info.requestedPermissions;
         } catch (PackageManager.NameNotFoundException e) {
-            return new MessageTemplate.Builder("Package Not found.")
+            return new MessageTemplate.Builder(
+                    getCarContext().getString(R.string.package_not_found_error_msg))
                     .setHeaderAction(headerAction)
                     .addAction(mRefreshAction)
                     .build();
@@ -112,18 +114,18 @@
             }
         }
         if (permissions.isEmpty()) {
-            return new MessageTemplate.Builder("All permissions have been granted. Please "
-                    + "revoke permissions from Settings.")
+            return new MessageTemplate.Builder(
+                    getCarContext().getString(R.string.permissions_granted_msg))
                     .setHeaderAction(headerAction)
                     .addAction(new Action.Builder()
-                            .setTitle("Close")
+                            .setTitle(getCarContext().getString(R.string.close_action_title))
                             .setOnClickListener(this::finish)
                             .build())
                     .build();
         }
 
         StringBuilder message = new StringBuilder()
-                .append("The app needs access to the following permissions:\n");
+                .append(getCarContext().getString(R.string.needs_access_msg_prefix));
         for (String permission : permissions) {
             message.append(permission);
             message.append("\n");
@@ -139,13 +141,14 @@
                                 CarToast.LENGTH_LONG).show();
                     });
             if (!getCarContext().getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE)) {
-                CarToast.makeText(getCarContext(), "Grant Permission on the phone screen",
+                CarToast.makeText(getCarContext(),
+                        getCarContext().getString(R.string.phone_screen_permission_msg),
                         CarToast.LENGTH_LONG).show();
             }
         });
 
         Action action = new Action.Builder()
-                .setTitle("Grant Access")
+                .setTitle(getCarContext().getString(R.string.grant_access_action_title))
                 .setBackgroundColor(CarColor.BLUE)
                 .setOnClickListener(listener)
                 .build();
@@ -155,9 +158,11 @@
         LocationManager locationManager =
                 (LocationManager) getCarContext().getSystemService(Context.LOCATION_SERVICE);
         if (!LocationManagerCompat.isLocationEnabled(locationManager)) {
-            message.append("Enable Location Permissions on device\n");
+            message.append(
+                    getCarContext().getString(R.string.enable_location_permission_on_device_msg));
+            message.append("\n");
             action2 = new Action.Builder()
-                    .setTitle("Enable Location")
+                    .setTitle(getCarContext().getString(R.string.enable_location_action_title))
                     .setBackgroundColor(CarColor.BLUE)
                     .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
                         getCarContext().startActivity(
@@ -165,8 +170,9 @@
                                         Intent.FLAG_ACTIVITY_NEW_TASK));
                         if (!getCarContext().getPackageManager().hasSystemFeature(
                                 FEATURE_AUTOMOTIVE)) {
-                            CarToast.makeText(getCarContext(), "Enable location on the phone "
-                                            + "screen",
+                            CarToast.makeText(getCarContext(),
+                                    getCarContext().getString(
+                                            R.string.enable_location_permission_on_phone_msg),
                                     CarToast.LENGTH_LONG).show();
                         }
                     }))
@@ -175,7 +181,7 @@
 
 
         LongMessageTemplate.Builder builder = new LongMessageTemplate.Builder(message)
-                .setTitle("Required Permissions")
+                .setTitle(getCarContext().getString(R.string.required_permissions_title))
                 .addAction(action)
                 .setHeaderAction(headerAction);
 
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ReservationCancelledScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ReservationCancelledScreen.java
index 36dce22..fb8d0b9 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ReservationCancelledScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ReservationCancelledScreen.java
@@ -25,6 +25,7 @@
 import androidx.car.app.model.PaneTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** A screen that displays text about canceling the reservation */
 public final class ReservationCancelledScreen extends Screen {
@@ -36,13 +37,14 @@
     @NonNull
     @Override
     public Template onGetTemplate() {
-        Pane pane =
-                new Pane.Builder()
-                        .addRow(new Row.Builder().setTitle("Reservation canceled").build())
-                        .build();
+        Pane pane = new Pane.Builder()
+                .addRow(new Row.Builder()
+                        .setTitle(getCarContext().getString(R.string.reservation_cancelled_msg))
+                        .build())
+                .build();
 
         return new PaneTemplate.Builder(pane)
-                .setTitle("Cancel Reservation Screen")
+                .setTitle(getCarContext().getString(R.string.cancel_reservation_title))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ResultDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ResultDemoScreen.java
index 884448c..c46df85 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ResultDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/ResultDemoScreen.java
@@ -26,6 +26,7 @@
 import androidx.car.app.model.Action;
 import androidx.car.app.model.MessageTemplate;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /**
  * A screen to demo the use of {@link CarContext#setCarAppResult(int, android.content.Intent)}
@@ -40,16 +41,17 @@
     public Template onGetTemplate() {
         ComponentName callingComponent = getCarContext().getCallingComponent();
         if (callingComponent == null) {
-            return new MessageTemplate.Builder("This app was not started for result")
-                    .setTitle("Result demo")
+            return new MessageTemplate.Builder(
+                    getCarContext().getString(R.string.not_started_for_result_msg))
+                    .setTitle(getCarContext().getString(R.string.result_demo_title))
                     .setHeaderAction(Action.BACK)
                     .build();
         }
 
-        return new MessageTemplate.Builder("This app was called for result from "
-                + callingComponent.getPackageName() + ". Please select the"
-                + " result to send back to the caller")
-                .setTitle("Result demo")
+        return new MessageTemplate.Builder(
+                getCarContext().getString(R.string.started_for_result_msg,
+                        callingComponent.getPackageName()))
+                .setTitle(getCarContext().getString(R.string.result_demo_title))
                 .setHeaderAction(Action.BACK)
                 .addAction(new Action.Builder()
                         .setTitle("Okay (action = 'foo')")
@@ -60,7 +62,7 @@
                         })
                         .build())
                 .addAction(new Action.Builder()
-                        .setTitle("Cancel")
+                        .setTitle(getCarContext().getString(R.string.cancel_action_title))
                         .setOnClickListener(() -> {
                             getCarContext().setCarAppResult(Activity.RESULT_CANCELED, null);
                             getCarContext().finishCarApp();
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/MapTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/MapTemplateDemoScreen.java
index e9c59de..8e10bb9 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/MapTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/MapTemplateDemoScreen.java
@@ -79,12 +79,12 @@
         paneBuilder.setImage(new CarIcon.Builder(mPaneImage).build());
 
         Action.Builder primaryActionBuilder = new Action.Builder()
-                .setTitle("Reserve Chair")
+                .setTitle(getCarContext().getString(R.string.primary_action_title))
                 .setBackgroundColor(CarColor.BLUE)
                 .setOnClickListener(
                         () -> CarToast.makeText(
                                         getCarContext(),
-                                        "Reserve/Primary button pressed",
+                                        getCarContext().getString(R.string.primary_toast_msg),
                                         LENGTH_SHORT)
                                 .show());
         if (getCarContext().getCarAppApiLevel() >= CarAppApiLevels.LEVEL_4) {
@@ -95,11 +95,12 @@
                 .addAction(primaryActionBuilder.build())
                 .addAction(
                         new Action.Builder()
-                                .setTitle("Options")
+                                .setTitle(getCarContext().getString(R.string.options_action_title))
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
                                                         getCarContext(),
-                                                        "Options button pressed",
+                                                        getCarContext().getString(
+                                                                R.string.options_toast_msg),
                                                         LENGTH_SHORT)
                                                 .show())
                                 .build());
@@ -118,7 +119,11 @@
                         .setOnClickListener(() -> {
                             CarToast.makeText(
                                             getCarContext(),
-                                            mIsFavorite ? "Not a favorite!" : "Favorite!",
+                                            mIsFavorite
+                                                    ? getCarContext()
+                                                            .getString(R.string.favorite_toast_msg)
+                                                    : getCarContext().getString(
+                                                            R.string.not_favorite_toast_msg),
                                             LENGTH_SHORT)
                                     .show();
                             mIsFavorite = !mIsFavorite;
@@ -134,7 +139,7 @@
                                                 R.drawable.ic_close_white_24dp))
                                         .build())
                         .build())
-                .setTitle("Map Template with Pane Demo")
+                .setTitle(getCarContext().getString(R.string.map_template_pane_demo_title))
                 .build();
 
 
@@ -148,7 +153,8 @@
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
                                                         getCarContext(),
-                                                        "Bug reported!",
+                                                        getCarContext().getString(
+                                                                R.string.bug_reported_toast_msg),
                                                         CarToast.LENGTH_SHORT)
                                                 .show())
                                 .setIcon(
@@ -175,18 +181,18 @@
             case 0:
                 // Row with a large image.
                 return new Row.Builder()
-                        .setTitle("Row with a large image and long text long text long text long "
-                                + "text long text")
-                        .addText("Text text text")
-                        .addText("Text text text")
+                        .setTitle(getCarContext().getString(R.string.first_row_title))
+                        .addText(getCarContext().getString(R.string.first_row_text))
+                        .addText(getCarContext().getString(R.string.first_row_text))
                         .setImage(new CarIcon.Builder(mRowLargeIcon).build())
                         .build();
             default:
                 return new Row.Builder()
-                        .setTitle("Row title " + (index + 1))
-                        .addText("R"
-                                + "ow text 1")
-                        .addText("Row text 2")
+                        .setTitle(
+                                getCarContext().getString(R.string.other_row_title_prefix) + (index
+                                        + 1))
+                        .addText(getCarContext().getString(R.string.other_row_text))
+                        .addText(getCarContext().getString(R.string.other_row_text))
                         .build();
 
         }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationDemosScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationDemosScreen.java
index c6a28de..72642a5 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationDemosScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationDemosScreen.java
@@ -49,7 +49,7 @@
                                                 R.drawable.ic_explore_white_24dp))
                                         .build(),
                                 Row.IMAGE_TYPE_ICON)
-                        .setTitle("Navigation Template Demo")
+                        .setTitle(getCarContext().getString(R.string.nav_template_demos_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -61,7 +61,8 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Place List Navigation Template Demo")
+                        .setTitle(getCarContext().getString(
+                                R.string.place_list_nav_template_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -72,7 +73,8 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Route Preview Template Demo")
+                        .setTitle(getCarContext().getString(
+                                R.string.route_preview_template_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -81,7 +83,8 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Notification Template Demo")
+                        .setTitle(getCarContext().getString(
+                                R.string.notification_template_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -92,7 +95,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Navigation Template with map only Demo")
+                        .setTitle(getCarContext().getString(R.string.nav_map_template_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -101,7 +104,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Map Template with Pane Demo")
+                        .setTitle(getCarContext().getString(R.string.map_template_pane_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -110,7 +113,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Navigation Demos")
+                .setTitle(getCarContext().getString(R.string.nav_demos_title))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationMapOnlyScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationMapOnlyScreen.java
index ca57c8c..b328da4 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationMapOnlyScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationMapOnlyScreen.java
@@ -23,6 +23,7 @@
 import androidx.car.app.model.ActionStrip;
 import androidx.car.app.model.Template;
 import androidx.car.app.navigation.model.NavigationTemplate;
+import androidx.car.app.sample.showcase.common.R;
 
 /** Simple demo of how to present a navigation screen with only a map. */
 public final class NavigationMapOnlyScreen extends Screen {
@@ -38,7 +39,8 @@
                 new ActionStrip.Builder()
                         .addAction(
                                 new Action.Builder()
-                                        .setTitle("BACK")
+                                        .setTitle(getCarContext().getString(
+                                                R.string.back_caps_action_title))
                                         .setOnClickListener(this::finish)
                                         .build())
                         .build();
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
index 3d1b041..d79a8e5 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
@@ -61,7 +61,7 @@
      * The number of notifications fired so far.
      *
      * <p>We use this number to post notifications with a repeating list of directions. See {@link
-     * #getDirectionInfo(int)} for details.
+     * #getDirectionInfo(Context, int)} for details.
      */
     int mNotificationCount = 0;
 
@@ -119,7 +119,7 @@
             Context context, int notificationCount) {
         NotificationCompat.Builder builder =
                 new NotificationCompat.Builder(context, NAV_NOTIFICATION_CHANNEL_ID);
-        DirectionInfo directionInfo = getDirectionInfo(notificationCount);
+        DirectionInfo directionInfo = getDirectionInfo(context, notificationCount);
 
         // Set an intent to open the car app. The app receives this intent when the user taps the
         // heads-up notification or the rail widget.
@@ -189,7 +189,7 @@
      * <p>There are 5 directions, repeating in order. For each direction, the alert will only show
      * once, but the distance will update on every count on the rail widget.
      */
-    private static DirectionInfo getDirectionInfo(int notificationCount) {
+    private static DirectionInfo getDirectionInfo(Context context, int notificationCount) {
         DecimalFormat formatter = new DecimalFormat("#.##");
         formatter.setRoundingMode(RoundingMode.DOWN);
         int repeatingCount = notificationCount % 35;
@@ -197,7 +197,7 @@
             // Distance decreases from 1km to 0.1km
             String distance = formatter.format((10 - repeatingCount) * 0.1) + "km";
             return new DirectionInfo(
-                    "Go Straight",
+                    context.getString(R.string.go_straight),
                     distance,
                     R.drawable.arrow_straight,
                     /*  repeatingCount > 0);
@@ -205,7 +205,7 @@
             // Distance decreases from 5km to 0.5km
             String distance = formatter.format((20 - repeatingCount) * 0.5) + "km";
             return new DirectionInfo(
-                    "Turn Right",
+                    context.getString(R.string.turn_right),
                     distance,
                     R.drawable.arrow_right_turn,
                     /*  repeatingCount > 10);
@@ -213,7 +213,7 @@
             // Distance decreases from 200m to 40m
             String distance = formatter.format((25 - repeatingCount) * 40) + "m";
             return new DirectionInfo(
-                    "Take 520",
+                    context.getString(R.string.take_520),
                     distance,
                     R.drawable.ic_520,
                     /*  repeatingCount > 20);
@@ -221,7 +221,7 @@
             // Distance decreases from 1km to 0.1km
             String distance = formatter.format((35 - repeatingCount) * 0.1) + "km";
             return new DirectionInfo(
-                    "Gas Station",
+                    context.getString(R.string.gas_station),
                     distance,
                     R.drawable.ic_local_gas_station_white_48dp,
                     repeatingCount > 25);
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
index 2db959c..e183ab3 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
@@ -30,6 +30,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** A simple screen that demonstrates how to use navigation notifications in a car app. */
 public final class NavigationNotificationsDemoScreen extends Screen {
@@ -48,7 +49,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Start Notification")
+                        .setTitle(getCarContext().getString(R.string.start_notification_title))
                         .setOnClickListener(
                                 () -> {
                                     Context context = getCarContext();
@@ -65,7 +66,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Stop Notification")
+                        .setTitle(getCarContext().getString(R.string.stop_notification_title))
                         .setOnClickListener(
                                 () ->
                                         getCarContext()
@@ -78,7 +79,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Navigation Notification Demo")
+                .setTitle(getCarContext().getString(R.string.nav_notification_demo_title))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/PlaceListNavigationTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/PlaceListNavigationTemplateDemoScreen.java
index ffd9a81..16e2e22 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/PlaceListNavigationTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/PlaceListNavigationTemplateDemoScreen.java
@@ -23,6 +23,7 @@
 import androidx.car.app.model.ActionStrip;
 import androidx.car.app.model.Template;
 import androidx.car.app.navigation.model.PlaceListNavigationTemplate;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.sample.showcase.common.common.SamplePlaces;
 import androidx.car.app.sample.showcase.common.navigation.routing.RoutingDemoModels;
 
@@ -47,7 +48,8 @@
                         new ActionStrip.Builder()
                                 .addAction(
                                         new Action.Builder()
-                                                .setTitle("Search")
+                                                .setTitle(getCarContext().getString(
+                                                        R.string.search_action_title))
                                                 .setOnClickListener(() -> {
                                                 })
                                                 .build())
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/RoutePreviewDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/RoutePreviewDemoScreen.java
index 84cf7ad..8f2fe42 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/RoutePreviewDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/RoutePreviewDemoScreen.java
@@ -32,6 +32,7 @@
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
 import androidx.car.app.navigation.model.RoutePreviewNavigationTemplate;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.sample.showcase.common.navigation.routing.RoutingDemoModels;
 import androidx.car.app.versioning.CarAppApiLevels;
 
@@ -48,27 +49,35 @@
             case 0:
                 // Set text variants for the first route.
                 SpannableString shortRouteLongText = new SpannableString(
-                        "   \u00b7 ---------------- Short" + "  " + "route "
-                                + "-------------------");
+                        "   \u00b7 ---------------- " + getCarContext().getString(
+                                R.string.short_route)
+                                + " -------------------");
                 shortRouteLongText.setSpan(DurationSpan.create(TimeUnit.HOURS.toSeconds(26)), 0, 1,
                         0);
-                SpannableString firstRouteShortText = new SpannableString("   \u00b7 Short route");
+                SpannableString firstRouteShortText = new SpannableString(
+                        "   \u00b7 " + getCarContext().getString(R.string.short_route));
                 firstRouteShortText.setSpan(DurationSpan.create(TimeUnit.HOURS.toSeconds(26)), 0, 1,
                         0);
                 return new CarText.Builder(shortRouteLongText)
                         .addVariant(firstRouteShortText)
                         .build();
             case 1:
-                SpannableString lessBusyRouteText = new SpannableString("   \u00b7 Less busy");
+                SpannableString lessBusyRouteText =
+                        new SpannableString(
+                                "   \u00b7 " + getCarContext().getString(R.string.less_busy));
                 lessBusyRouteText.setSpan(DurationSpan.create(TimeUnit.HOURS.toSeconds(24)), 0, 1,
                         0);
                 return new CarText.Builder(lessBusyRouteText).build();
             case 2:
-                SpannableString hovRouteText = new SpannableString("   \u00b7 HOV friendly");
+                SpannableString hovRouteText =
+                        new SpannableString(
+                                "   \u00b7 " + getCarContext().getString(R.string.hov_friendly));
                 hovRouteText.setSpan(DurationSpan.create(TimeUnit.MINUTES.toSeconds(867)), 0, 1, 0);
                 return new CarText.Builder(hovRouteText).build();
             default:
-                SpannableString routeText = new SpannableString("   \u00b7 Long route");
+                SpannableString routeText =
+                        new SpannableString(
+                                "   \u00b7 " + getCarContext().getString(R.string.long_route));
                 routeText.setSpan(DurationSpan.create(TimeUnit.MINUTES.toSeconds(867L + index)),
                         0, 1, 0);
                 return new CarText.Builder(routeText).build();
@@ -105,8 +114,9 @@
 
         // Set text variants for the navigate action text.
         CarText navigateActionText =
-                new CarText.Builder("Continue to start navigation").addVariant("Continue to "
-                        + "route").build();
+                new CarText.Builder(getCarContext().getString(R.string.continue_start_nav))
+                        .addVariant(getCarContext().getString(R.string.continue_route))
+                        .build();
 
         return new RoutePreviewNavigationTemplate.Builder()
                 .setItemList(itemListBuilder.build())
@@ -115,25 +125,30 @@
                                 .setTitle(navigateActionText)
                                 .setOnClickListener(this::onNavigate)
                                 .build())
-                .setTitle("Routes")
+                .setTitle(getCarContext().getString(R.string.routes_title))
                 .setMapActionStrip(RoutingDemoModels.getMapActionStrip(getCarContext()))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
 
     private void onNavigate() {
-        CarToast.makeText(getCarContext(), "Navigation Requested", LENGTH_LONG * 2).show();
+        CarToast.makeText(getCarContext(),
+                getCarContext().getString(R.string.nav_requested_toast_msg),
+                LENGTH_LONG * 2).show();
     }
 
     private void onRouteSelected(int index) {
-        CarToast.makeText(getCarContext(), "Selected route: " + index, LENGTH_LONG).show();
+        CarToast.makeText(getCarContext(),
+                getCarContext().getString(R.string.selected_route_toast_msg) + ": " + index,
+                LENGTH_LONG).show();
     }
 
     private void onRoutesVisible(int startIndex, int endIndex) {
         CarToast.makeText(
-                getCarContext(),
-                "Visible routes: [" + startIndex + "," + endIndex + "]",
-                LENGTH_LONG)
+                        getCarContext(),
+                        getCarContext().getString(R.string.visible_routes_toast_msg)
+                                + ": [" + startIndex + "," + endIndex + "]",
+                        LENGTH_LONG)
                 .show();
     }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/ArrivedDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/ArrivedDemoScreen.java
index 78a58f9..0368d0e 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/ArrivedDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/ArrivedDemoScreen.java
@@ -39,8 +39,9 @@
     public Template onGetTemplate() {
         return new NavigationTemplate.Builder()
                 .setNavigationInfo(
-                        new MessageInfo.Builder("Arrived!")
-                                .setText("Google Bellevue Office\n1120 112th Ave NE")
+                        new MessageInfo.Builder(
+                                getCarContext().getString(R.string.arrived_exclamation_msg))
+                                .setText(getCarContext().getString(R.string.arrived_address_msg))
                                 .setImage(
                                         new CarIcon.Builder(
                                                 IconCompat.createWithResource(
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/NavigationTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/NavigationTemplateDemoScreen.java
index 2f849e6..7ed0a75 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/NavigationTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/NavigationTemplateDemoScreen.java
@@ -24,6 +24,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** A screen showing a demos for the navigation template in different states. */
 public final class NavigationTemplateDemoScreen extends Screen {
@@ -38,7 +39,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Loading Demo")
+                        .setTitle(getCarContext().getString(R.string.loading_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -47,7 +48,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Navigating Demo")
+                        .setTitle(getCarContext().getString(R.string.navigating_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -56,7 +57,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Arrived Demo")
+                        .setTitle(getCarContext().getString(R.string.arrived_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -65,7 +66,7 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Junction Image Demo")
+                        .setTitle(getCarContext().getString(R.string.junction_image_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -74,7 +75,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Navigation Template Demos")
+                .setTitle(getCarContext().getString(R.string.nav_template_demos_title))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/RoutingDemoModels.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/RoutingDemoModels.java
index cc374fc..55583e4 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/RoutingDemoModels.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/routing/RoutingDemoModels.java
@@ -48,11 +48,14 @@
 /** A class that provides models for the routing demos. */
 public abstract class RoutingDemoModels {
 
+    private RoutingDemoModels() {
+    }
+
     /** Returns the current {@link Step} with information such as the cue text and images. */
     @NonNull
     public static Step getCurrentStep(@NonNull CarContext carContext) {
         // Create the cue text, and span the "520" text with a highway sign image.
-        String currentStepCue = "Roy st 520";
+        String currentStepCue = carContext.getString(R.string.current_step_cue);
         SpannableString currentStepCueWithImage = new SpannableString(currentStepCue);
         CarIconSpan highwaySign =
                 CarIconSpan.create(
@@ -101,7 +104,7 @@
     @NonNull
     public static Step getNextStep(@NonNull CarContext carContext) {
         // Create the cue text, and span the "I5" text with an image.
-        String nextStepCue = "I5 Aurora Ave N";
+        String nextStepCue = carContext.getString(R.string.next_step_cue);
         SpannableString nextStepCueWithImage = new SpannableString(nextStepCue);
         CarIconSpan highwaySign =
                 CarIconSpan.create(
@@ -134,7 +137,8 @@
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
                                                         carContext,
-                                                        "Bug reported!",
+                                                        carContext.getString(
+                                                                R.string.bug_reported_toast_msg),
                                                         CarToast.LENGTH_SHORT)
                                                 .show())
                                 .setIcon(
@@ -146,7 +150,7 @@
                                 .build())
                 .addAction(
                         new Action.Builder()
-                                .setTitle("Stop")
+                                .setTitle(carContext.getString(R.string.stop_action_title))
                                 .setOnClickListener(onStopNavigation)
                                 .setFlags(Action.FLAG_IS_PERSISTENT)
                                 .build())
@@ -165,7 +169,8 @@
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
                                                         carContext,
-                                                        "Zoomed in",
+                                                        carContext.getString(
+                                                                R.string.zoomed_in_toast_msg),
                                                         CarToast.LENGTH_SHORT)
                                                 .show())
                                 .setIcon(
@@ -180,7 +185,8 @@
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
                                                         carContext,
-                                                        "Zoomed out",
+                                                        carContext.getString(
+                                                                R.string.zoomed_out_toast_msg),
                                                         CarToast.LENGTH_SHORT)
                                                 .show())
                                 .setIcon(
@@ -212,7 +218,7 @@
                 .setRemainingTimeSeconds(TimeUnit.MILLISECONDS.toSeconds(timeToDestinationMillis))
                 .setRemainingTimeColor(CarColor.YELLOW)
                 .setRemainingDistanceColor(CarColor.RED)
-                .setTripText(CarText.create("Pick Up Alice"))
+                .setTripText(CarText.create(carContext.getString(R.string.travel_est_trip_text)))
                 .setTripIcon(new CarIcon.Builder(
                         IconCompat.createWithResource(
                                 carContext,
@@ -220,7 +226,4 @@
                         .build())
                 .build();
     }
-
-    private RoutingDemoModels() {
-    }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/renderer/CarHardwareRenderer.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/renderer/CarHardwareRenderer.java
index fc72bed..bca753c 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/renderer/CarHardwareRenderer.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/renderer/CarHardwareRenderer.java
@@ -43,6 +43,7 @@
 import androidx.car.app.hardware.info.Mileage;
 import androidx.car.app.hardware.info.Speed;
 import androidx.car.app.hardware.info.TollCard;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.versioning.CarAppApiLevels;
 import androidx.core.content.ContextCompat;
 
@@ -83,16 +84,6 @@
     CarHardwareLocation mCarHardwareLocation;
     @Nullable
     private Runnable mRequestRenderRunnable;
-    private boolean mHasTollCardPermission;
-    private boolean mHasEnergyLevelPermission;
-    private boolean mHasSpeedPermission;
-    private boolean mHasMileagePermission;
-    private boolean mHasEvStatusPermission;
-    private boolean mHasAccelerometerPermission;
-    private boolean mHasGyroscopePermission;
-    private boolean mHasCompassPermission;
-    private boolean mHasCarHardwareLocationPermission;
-
     private final OnCarDataAvailableListener<TollCard> mTollListener = data -> {
         synchronized (this) {
             Log.i(TAG, "Received toll information:" + data);
@@ -156,6 +147,15 @@
             requestRenderFrame();
         }
     };
+    private boolean mHasTollCardPermission;
+    private boolean mHasEnergyLevelPermission;
+    private boolean mHasSpeedPermission;
+    private boolean mHasMileagePermission;
+    private boolean mHasEvStatusPermission;
+    private boolean mHasAccelerometerPermission;
+    private boolean mHasGyroscopePermission;
+    private boolean mHasCompassPermission;
+    private boolean mHasCarHardwareLocationPermission;
 
     public CarHardwareRenderer(@NonNull CarContext carContext) {
         mCarContext = carContext;
@@ -369,12 +369,13 @@
             // Prepare text for Toll card status
             StringBuilder info = new StringBuilder();
             if (!mHasTollCardPermission) {
-                info.append("No TollCard Permission.");
+                info.append(mCarContext.getString(R.string.no_toll_card_permission));
             } else if (mTollCard == null) {
-                info.append("Fetching Toll information.");
+                info.append(mCarContext.getString(R.string.fetch_toll_info));
             } else {
                 info.append(
-                        generateCarValueText("Toll card state", mTollCard.getCardState(), ". "));
+                        generateCarValueText(mCarContext.getString(R.string.toll_card_state),
+                                mTollCard.getCardState(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -382,18 +383,22 @@
             // Prepare text for Energy Level
             info = new StringBuilder();
             if (!mHasEnergyLevelPermission) {
-                info.append("No EnergyLevel Permission.");
+                info.append(mCarContext.getString(R.string.no_energy_level_permission));
             } else if (mEnergyLevel == null) {
-                info.append("Fetching Energy Level.");
+                info.append(mCarContext.getString(R.string.fetch_energy_level));
             } else {
                 info.append(
-                        generateCarValueText("Low energy", mEnergyLevel.getEnergyIsLow(), ". "));
+                        generateCarValueText(mCarContext.getString(R.string.low_energy),
+                                mEnergyLevel.getEnergyIsLow(), ". "));
                 info.append(
-                        generateCarValueText("Range", mEnergyLevel.getRangeRemainingMeters(),
+                        generateCarValueText(mCarContext.getString(R.string.range),
+                                mEnergyLevel.getRangeRemainingMeters(),
                                 " m. "));
-                info.append(generateCarValueText("Fuel", mEnergyLevel.getFuelPercent(), " %. "));
+                info.append(generateCarValueText(mCarContext.getString(R.string.fuel),
+                        mEnergyLevel.getFuelPercent(), " %. "));
                 info.append(
-                        generateCarValueText("Battery", mEnergyLevel.getBatteryPercent(), " %. "));
+                        generateCarValueText(mCarContext.getString(R.string.battery),
+                                mEnergyLevel.getBatteryPercent(), " %. "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -401,15 +406,17 @@
             // Prepare text for Speed
             info = new StringBuilder();
             if (!mHasSpeedPermission) {
-                info.append("No Speed Permission.");
+                info.append(mCarContext.getString(R.string.no_speed_permission));
             } else if (mSpeed == null) {
-                info.append("Fetching Speed.");
+                info.append(mCarContext.getString(R.string.fetch_speed));
             } else {
-                info.append(generateCarValueText("Display Speed",
+                info.append(generateCarValueText(mCarContext.getString(R.string.display_speed),
                         mSpeed.getDisplaySpeedMetersPerSecond(), " m/s. "));
-                info.append(generateCarValueText("Raw Speed", mSpeed.getRawSpeedMetersPerSecond(),
+                info.append(generateCarValueText(mCarContext.getString(R.string.raw_speed),
+                        mSpeed.getRawSpeedMetersPerSecond(),
                         " m/s. "));
-                info.append(generateCarValueText("Unit", mSpeed.getSpeedDisplayUnit(), ". "));
+                info.append(generateCarValueText(mCarContext.getString(R.string.unit),
+                        mSpeed.getSpeedDisplayUnit(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -419,14 +426,16 @@
                     FEATURE_AUTOMOTIVE)) {
                 info = new StringBuilder();
                 if (!mHasMileagePermission) {
-                    info.append("No Mileage Permission.");
+                    info.append(mCarContext.getString(R.string.no_mileage_permission));
                 } else if (mMileage == null) {
-                    info.append("Fetching mileage.");
+                    info.append(mCarContext.getString(R.string.no_mileage_permission));
                 } else {
                     info.append(
-                            generateCarValueText("Odometer", mMileage.getOdometerMeters(), " m. "));
+                            generateCarValueText(mCarContext.getString(R.string.odometer),
+                                    mMileage.getOdometerMeters(), " m. "));
                     info.append(
-                            generateCarValueText("Unit", mMileage.getDistanceDisplayUnit(), ". "));
+                            generateCarValueText(mCarContext.getString(R.string.unit),
+                                    mMileage.getDistanceDisplayUnit(), ". "));
                 }
                 canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
                 verticalPos += height;
@@ -438,13 +447,13 @@
                 // Prepare text for EV status
                 info = new StringBuilder();
                 if (!mHasEvStatusPermission) {
-                    info.append("No EV status Permission.");
+                    info.append(mCarContext.getString(R.string.no_ev_status_permission));
                 } else if (mEvStatus == null) {
-                    info.append("Fetching EV status.");
+                    info.append(mCarContext.getString(R.string.fetch_ev_status));
                 } else {
-                    info.append(generateCarValueText("Ev Charge Port Connected",
+                    info.append(generateCarValueText(mCarContext.getString(R.string.ev_connected),
                             mEvStatus.getEvChargePortConnected(), ". "));
-                    info.append(generateCarValueText("Ev Charge Port Open",
+                    info.append(generateCarValueText(mCarContext.getString(R.string.ev_open),
                             mEvStatus.getEvChargePortOpen(), ". "));
                 }
                 canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
@@ -454,12 +463,13 @@
             // Prepare text for Accelerometer
             info = new StringBuilder();
             if (!mHasAccelerometerPermission) {
-                info.append("No Accelerometer Permission.");
+                info.append(mCarContext.getString(R.string.no_accelerometer_permission));
             } else if (mAccelerometer == null) {
-                info.append("Fetching accelerometer");
+                info.append(mCarContext.getString(R.string.fetch_accelerometer));
             } else {
                 info.append(
-                        generateCarValueText("Accelerometer", mAccelerometer.getForces(), ". "));
+                        generateCarValueText(mCarContext.getString(R.string.accelerometer),
+                                mAccelerometer.getForces(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -467,11 +477,12 @@
             // Prepare text for Gyroscope
             info = new StringBuilder();
             if (!mHasGyroscopePermission) {
-                info.append("No Gyroscope Permission.");
+                info.append(mCarContext.getString(R.string.no_gyroscope_permission));
             } else if (mGyroscope == null) {
-                info.append("Fetching gyroscope");
+                info.append(mCarContext.getString(R.string.fetch_gyroscope));
             } else {
-                info.append(generateCarValueText("Gyroscope", mGyroscope.getRotations(), ". "));
+                info.append(generateCarValueText(mCarContext.getString(R.string.gyroscope),
+                        mGyroscope.getRotations(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -479,11 +490,12 @@
             // Prepare text for Compass
             info = new StringBuilder();
             if (!mHasCompassPermission) {
-                info.append("No Compass Permission.");
+                info.append(mCarContext.getString(R.string.no_compass_permission));
             } else if (mCompass == null) {
-                info.append("Fetching compass");
+                info.append(mCarContext.getString(R.string.fetch_compass));
             } else {
-                info.append(generateCarValueText("Compass", mCompass.getOrientations(), ". "));
+                info.append(generateCarValueText(mCarContext.getString(R.string.compass),
+                        mCompass.getOrientations(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
             verticalPos += height;
@@ -491,12 +503,13 @@
             // Prepare text for Location
             info = new StringBuilder();
             if (!mHasCarHardwareLocationPermission) {
-                info.append("No CarHardwareLocation Permission.");
+                info.append(mCarContext.getString(R.string.no_car_hardware_location));
             } else if (mCarHardwareLocation == null) {
-                info.append("Fetching location");
+                info.append(mCarContext.getString(R.string.fetch_location));
             } else {
-                info.append(generateCarValueText("Car Hardware Location",
-                        mCarHardwareLocation.getLocation(), ". "));
+                info.append(
+                        generateCarValueText(mCarContext.getString(R.string.car_hardware_location),
+                                mCarHardwareLocation.getLocation(), ". "));
             }
             canvas.drawText(info.toString(), LEFT_MARGIN, verticalPos, mCarInfoPaint);
         }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/GridTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/GridTemplateDemoScreen.java
index 86fb82a..fd0a075 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/GridTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/GridTemplateDemoScreen.java
@@ -91,18 +91,19 @@
                 // Grid item with an icon and a title.
                 return new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build(), GridItem.IMAGE_TYPE_ICON)
-                        .setTitle("Non-actionable")
+                        .setTitle(getCarContext().getString(R.string.non_actionable))
                         .build();
             case 1:
                 // Grid item with an icon, a title, onClickListener and no text.
                 return new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build(), GridItem.IMAGE_TYPE_ICON)
-                        .setTitle("Second Item")
+                        .setTitle(getCarContext().getString(R.string.second_item))
                         .setOnClickListener(
                                 () -> CarToast.makeText(
-                                        getCarContext(),
-                                        "Clicked second item",
-                                        LENGTH_SHORT)
+                                                getCarContext(),
+                                                getCarContext()
+                                                        .getString(R.string.second_item_toast_msg),
+                                                LENGTH_SHORT)
                                         .show())
                         .build();
             case 2:
@@ -110,15 +111,19 @@
                 // unchecked state.
                 return new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mIcon).build(), GridItem.IMAGE_TYPE_ICON)
-                        .setTitle("Third Item")
-                        .setText(mThirdItemToggleState ? "Checked" : "Unchecked")
+                        .setTitle(getCarContext().getString(R.string.third_item))
+                        .setText(mThirdItemToggleState
+                                ? getCarContext().getString(R.string.checked_action_title)
+                                : getCarContext().getString(R.string.unchecked_action_title))
                         .setOnClickListener(
                                 () -> {
                                     mThirdItemToggleState = !mThirdItemToggleState;
                                     CarToast.makeText(
-                                            getCarContext(),
-                                            "Third item checked: " + mThirdItemToggleState,
-                                            LENGTH_SHORT)
+                                                    getCarContext(),
+                                                    getCarContext().getString(
+                                                            R.string.third_item_checked_toast_msg)
+                                                            + ": " + mThirdItemToggleState,
+                                                    LENGTH_SHORT)
                                             .show();
                                     invalidate();
                                 })
@@ -129,15 +134,19 @@
                 // update.
                 if (mIsFourthItemLoading) {
                     return new GridItem.Builder()
-                            .setTitle("Fourth")
-                            .setText(mFourthItemToggleState ? "On" : "Off")
+                            .setTitle(getCarContext().getString(R.string.fourth_item))
+                            .setText(mFourthItemToggleState
+                                    ? getCarContext().getString(R.string.on_action_title)
+                                    : getCarContext().getString(R.string.off_action_title))
                             .setLoading(true)
                             .build();
                 } else {
                     return new GridItem.Builder()
                             .setImage(new CarIcon.Builder(mImage).build())
-                            .setTitle("Fourth")
-                            .setText(mFourthItemToggleState ? "On" : "Off")
+                            .setTitle(getCarContext().getString(R.string.fourth_item))
+                            .setText(mFourthItemToggleState
+                                    ? getCarContext().getString(R.string.on_action_title)
+                                    : getCarContext().getString(R.string.off_action_title))
                             .setOnClickListener(this::triggerFourthItemLoading)
                             .build();
                 }
@@ -146,14 +155,17 @@
                 // state.
                 return new GridItem.Builder()
                         .setImage(new CarIcon.Builder(mImage).build(), GridItem.IMAGE_TYPE_LARGE)
-                        .setTitle("Fifth Item has a long title set")
+                        .setTitle(getCarContext().getString(R.string.fifth_item))
                         .setOnClickListener(
                                 () -> {
                                     mFifthItemToggleState = !mFifthItemToggleState;
                                     CarToast.makeText(
-                                            getCarContext(),
-                                            "Fifth item checked: " + mFifthItemToggleState,
-                                            LENGTH_SHORT)
+                                                    getCarContext(),
+                                                    getCarContext().getString(
+                                                            R.string.fifth_item_checked_toast_msg)
+                                                            + ": "
+                                                            + mFifthItemToggleState,
+                                                    LENGTH_SHORT)
                                             .show();
                                     invalidate();
                                 })
@@ -165,15 +177,15 @@
                         new GridItem.Builder()
                                 .setImage(new CarIcon.Builder(mIcon).build(),
                                         GridItem.IMAGE_TYPE_ICON)
-                                .setTitle("Sixth Item has a long title set")
-                                .setText("Sixth Item has a long text set")
+                                .setTitle(getCarContext().getString(R.string.sixth_item))
+                                .setText(getCarContext().getString(R.string.sixth_item))
                                 .setOnClickListener(
-                                        () ->
-                                                CarToast.makeText(
+                                        () -> CarToast.makeText(
                                                         getCarContext(),
-                                                        "Clicked sixth item",
+                                                        getCarContext().getString(
+                                                                R.string.sixth_item_toast_msg),
                                                         LENGTH_SHORT)
-                                                        .show())
+                                                .show())
                                 .build();
             default:
                 String titleText = (index + 1) + "th item";
@@ -186,9 +198,9 @@
                         .setOnClickListener(
                                 () ->
                                         CarToast.makeText(
-                                                getCarContext(),
-                                                toastText,
-                                                LENGTH_SHORT)
+                                                        getCarContext(),
+                                                        toastText,
+                                                        LENGTH_SHORT)
                                                 .show())
                         .build();
         }
@@ -211,23 +223,23 @@
             gridItemListBuilder.addItem(createGridItem(i));
         }
 
+        Action settings = new Action.Builder()
+                .setTitle(getCarContext().getString(
+                        R.string.settings_action_title))
+                .setOnClickListener(
+                        () -> CarToast.makeText(
+                                        getCarContext(),
+                                        getCarContext().getString(R.string.settings_toast_msg),
+                                        LENGTH_SHORT)
+                                .show())
+                .build();
         return new GridTemplate.Builder()
                 .setHeaderAction(Action.APP_ICON)
                 .setSingleList(gridItemListBuilder.build())
-                .setTitle("Grid Template Demo")
+                .setTitle(getCarContext().getString(R.string.grid_template_demo_title))
                 .setActionStrip(
                         new ActionStrip.Builder()
-                                .addAction(
-                                        new Action.Builder()
-                                                .setTitle("Settings")
-                                                .setOnClickListener(
-                                                        () ->
-                                                                CarToast.makeText(
-                                                                        getCarContext(),
-                                                                        "Clicked Settings",
-                                                                        LENGTH_SHORT)
-                                                                        .show())
-                                                .build())
+                                .addAction(settings)
                                 .build())
                 .setHeaderAction(BACK)
                 .build();
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/ListTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/ListTemplateDemoScreen.java
index b3a6c76..45d7c52 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/ListTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/ListTemplateDemoScreen.java
@@ -32,6 +32,7 @@
 import androidx.car.app.model.ParkedOnlyOnClickListener;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.versioning.CarAppApiLevels;
 import androidx.lifecycle.DefaultLifecycleObserver;
 
@@ -55,9 +56,10 @@
         listBuilder.addItem(
                 new Row.Builder()
                         .setOnClickListener(
-                                ParkedOnlyOnClickListener.create(() -> onClick("Parked action")))
-                        .setTitle("Parked Only Title")
-                        .addText("More Parked only text.")
+                                ParkedOnlyOnClickListener.create(() -> onClick(
+                                        getCarContext().getString(R.string.parked_toast_msg))))
+                        .setTitle(getCarContext().getString(R.string.parked_only_title))
+                        .addText(getCarContext().getString(R.string.parked_only_text))
                         .build());
 
         // Some hosts may allow more items in the list than others, so create more.
@@ -69,7 +71,7 @@
 
             for (int i = 2; i <= listLimit; ++i) {
                 // For row text, set text variants that fit best in different screen sizes.
-                String secondTextStr = "Second line of text";
+                String secondTextStr = getCarContext().getString(R.string.second_line_text);
                 CarText secondText =
                         new CarText.Builder(
                                 "================= " + secondTextStr + " ================")
@@ -77,34 +79,38 @@
                                         + " ----------------------")
                                 .addVariant(secondTextStr)
                                 .build();
-                final String  row: " + i;
+                final String >
+                        + ": " + i;
                 listBuilder.addItem(
                         new Row.Builder()
                                 .setOnClickListener(() -> onClick(onClickText))
-                                .setTitle("Title " + i)
-                                .addText("First line of text")
+                                .setTitle(
+                                        getCarContext().getString(R.string.title_prefix) + " " + i)
+                                .addText(getCarContext().getString(R.string.first_line_text))
                                 .addText(secondText)
                                 .build());
             }
         }
 
+        Action settings = new Action.Builder()
+                .setTitle(getCarContext().getString(
+                        R.string.settings_action_title))
+                .setOnClickListener(
+                        () -> CarToast.makeText(
+                                        getCarContext(),
+                                        getCarContext().getString(
+                                                R.string.settings_toast_msg),
+                                        LENGTH_LONG)
+                                .show())
+                .build();
+
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("List Template Demo")
+                .setTitle(getCarContext().getString(R.string.list_template_demo_title))
                 .setHeaderAction(BACK)
                 .setActionStrip(
                         new ActionStrip.Builder()
-                                .addAction(
-                                        new Action.Builder()
-                                                .setTitle("Settings")
-                                                .setOnClickListener(
-                                                        () ->
-                                                                CarToast.makeText(
-                                                                        getCarContext(),
-                                                                        "Clicked Settings",
-                                                                        LENGTH_LONG)
-                                                                        .show())
-                                                .build())
+                                .addAction(settings)
                                 .build())
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/LongMessageTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/LongMessageTemplateDemoScreen.java
index 3249e49..b9d310c 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/LongMessageTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/LongMessageTemplateDemoScreen.java
@@ -31,53 +31,11 @@
 import androidx.car.app.model.MessageTemplate;
 import androidx.car.app.model.ParkedOnlyOnClickListener;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.versioning.CarAppApiLevels;
 
 /** A screen that demonstrates the long message template. */
 public class LongMessageTemplateDemoScreen extends Screen {
-    private static final String TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
-            + "Aliquam laoreet ac metus eu commodo. Sed a congue diam, sed dictum lectus. Nam nec"
-            + " tristique dolor, quis sodales arcu. Etiam at metus eu nulla auctor varius. "
-            + "Integer dolor lorem, placerat sit amet lacus in, imperdiet semper dui. Vestibulum "
-            + "ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; "
-            + "Quisque gravida fermentum egestas.\n"
-            + "\n"
-            + "Ut ut sodales mi. Aenean porta vel ipsum sed lacinia. Morbi odio ipsum, hendrerit "
-            + "eu est et, sollicitudin finibus diam. Nunc sit amet felis elit. Orci varius "
-            + "natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed "
-            + "vestibulum, tellus a rutrum auctor, diam arcu vestibulum purus, nec mollis ligula "
-            + "nisi in nisi. Donec sem tortor, pharetra sed fermentum sit amet, ullamcorper nec "
-            + "sapien. Aliquam risus arcu, porttitor eu dui nec, vulputate tempus libero. "
-            + "Curabitur sit amet tristique orci. Suspendisse et odio tempus, tempus turpis quis,"
-            + " euismod est.\n"
-            + "\n"
-            + "Vestibulum mauris ante, luctus viverra nisi eget, blandit facilisis nulla. "
-            + "Phasellus ex lorem, semper in vestibulum nec, aliquet vel elit. Aliquam vitae "
-            + "ligula nec enim dictum lobortis. Sed varius turpis quis nisi tempus varius. Sed "
-            + "non sollicitudin magna, at mattis tortor. Curabitur quis ligula eget lorem mattis "
-            + "tincidunt et in sapien. Curabitur a elit nisi. Aliquam ex arcu, hendrerit eget "
-            + "turpis vitae, bibendum vulputate nibh. Fusce vitae ex aliquet, tristique magna eu,"
-            + " vulputate dui. Aenean tempor viverra tortor non pharetra. Pellentesque convallis "
-            + "nec risus a auctor. Praesent non sem non eros tincidunt ullamcorper efficitur non "
-            + "lacus.\n"
-            + "\n"
-            + "Suspendisse accumsan ultricies egestas. Aenean leo ligula, congue ac erat eu, "
-            + "lobortis ultricies lorem. Nulla finibus, arcu sed tincidunt lobortis, magna justo "
-            + "rutrum ligula, et mattis felis turpis vel ex. Morbi ac auctor ex, at bibendum sem."
-            + " Vestibulum a tortor iaculis, viverra felis vitae, lobortis est. Duis sit amet "
-            + "condimentum sem. Ut molestie, dolor pretium imperdiet maximus, enim orci porta "
-            + "quam, id gravida enim nunc vitae lacus. Pellentesque habitant morbi tristique "
-            + "senectus et netus et malesuada fames ac turpis egestas. Nullam vel justo eu risus "
-            + "lobortis dignissim sit amet ullamcorper nulla. Donec finibus cursus purus "
-            + "porttitor pellentesque.\n"
-            + "\n"
-            + "Donec at vehicula ante. Suspendisse rutrum nisl quis metus faucibus lacinia. "
-            + "Vestibulum eros sapien, eleifend nec accumsan a, interdum sed nisi. Aenean posuere"
-            + " ultrices lorem non pharetra. Nulla non porta ligula. Maecenas at elit diam. "
-            + "Nullam gravida augue et semper eleifend. Fusce venenatis ac arcu et luctus. Mauris"
-            + " ultricies urna non dui interdum, vel hendrerit est aliquam. Fusce id dictum leo, "
-            + "fringilla egestas ipsum.";
-
     protected LongMessageTemplateDemoScreen(@NonNull CarContext carContext) {
         super(carContext);
     }
@@ -86,8 +44,10 @@
     @Override
     public Template onGetTemplate() {
         if (getCarContext().getCarAppApiLevel() < CarAppApiLevels.LEVEL_2) {
-            return new MessageTemplate.Builder("Your host doesn't support Long Message template")
-                    .setTitle("Incompatible host")
+            return new MessageTemplate.Builder(
+                    getCarContext().getString(R.string.long_msg_template_not_supported_text))
+                    .setTitle(getCarContext().getString(
+                            R.string.long_msg_template_not_supported_title))
                     .setHeaderAction(Action.BACK)
                     .build();
         }
@@ -98,36 +58,38 @@
                             getScreenManager().pop();
                             CarToast.makeText(
                                     getCarContext(),
-                                    "Clicked primary button",
+                                    getCarContext().getString(R.string.primary_action_title),
                                     LENGTH_LONG
                             ).show();
                         }))
-                .setTitle("Accept");
+                .setTitle(getCarContext().getString(R.string.accept_action_title));
         if (getCarContext().getCarAppApiLevel() >= CarAppApiLevels.LEVEL_4) {
             primaryActionBuilder.setFlags(FLAG_PRIMARY);
         }
 
-        return new LongMessageTemplate.Builder(TEXT)
-                .setTitle("Long Message Template Demo")
+        return new LongMessageTemplate.Builder(
+                getCarContext().getString(R.string.long_msg_template_text))
+                .setTitle(getCarContext().getString(R.string.long_msg_template_demo_title))
                 .setHeaderAction(BACK)
                 .addAction(primaryActionBuilder.build())
                 .addAction(new Action.Builder()
                         .setBackgroundColor(CarColor.RED)
                         .setOnClickListener(
                                 ParkedOnlyOnClickListener.create(() -> getScreenManager().pop()))
-                        .setTitle("Reject")
+                        .setTitle(getCarContext().getString(R.string.reject_action_title))
                         .build())
                 .setActionStrip(new ActionStrip.Builder()
                         .addAction(new Action.Builder()
-                            .setTitle("More")
-                            .setOnClickListener(
-                                    () ->
-                                            CarToast.makeText(
-                                                    getCarContext(),
-                                                    "Clicked More",
-                                                    LENGTH_LONG)
-                                                    .show())
-                            .build())
+                                .setTitle(getCarContext().getString(R.string.more_action_title))
+                                .setOnClickListener(
+                                        () ->
+                                                CarToast.makeText(
+                                                                getCarContext(),
+                                                                getCarContext().getString(
+                                                                        R.string.more_toast_msg),
+                                                                LENGTH_LONG)
+                                                        .show())
+                                .build())
                         .build())
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/MessageTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/MessageTemplateDemoScreen.java
index a8eb3a7..d2df37f 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/MessageTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/MessageTemplateDemoScreen.java
@@ -48,17 +48,30 @@
                 .setOnClickListener(() -> {
                     CarToast.makeText(
                             getCarContext(),
-                            "Clicked primary button",
+                            getCarContext().getString(R.string.primary_action_title),
                             LENGTH_LONG
                     ).show();
                 })
-                .setTitle("OK");
+                .setTitle(getCarContext().getString(R.string.ok_action_title));
         if (getCarContext().getCarAppApiLevel() >= CarAppApiLevels.LEVEL_4) {
             primaryActionBuilder.setFlags(FLAG_PRIMARY);
         }
 
-        return new MessageTemplate.Builder("Message goes here.\nMore text on second line.")
-                .setTitle("Message Template Demo")
+        Action settings = new Action.Builder()
+                .setTitle(getCarContext().getString(
+                        R.string.settings_action_title))
+                .setOnClickListener(
+                        () -> CarToast.makeText(
+                                        getCarContext(),
+                                        getCarContext().getString(
+                                                R.string.settings_toast_msg),
+                                        LENGTH_LONG)
+                                .show())
+                .build();
+
+        return new MessageTemplate.Builder(
+                getCarContext().getString(R.string.msg_template_demo_text))
+                .setTitle(getCarContext().getString(R.string.msg_template_demo_title))
                 .setIcon(
                         new CarIcon.Builder(
                                 IconCompat.createWithResource(
@@ -71,7 +84,7 @@
                 .addAction(
                         new Action.Builder()
                                 .setBackgroundColor(CarColor.RED)
-                                .setTitle("Throw")
+                                .setTitle(getCarContext().getString(R.string.throw_action_title))
                                 .setOnClickListener(
                                         () -> {
                                             throw new RuntimeException("Error");
@@ -80,17 +93,7 @@
 
                 .setActionStrip(
                         new ActionStrip.Builder()
-                                .addAction(
-                                        new Action.Builder()
-                                                .setTitle("Settings")
-                                                .setOnClickListener(
-                                                        () ->
-                                                                CarToast.makeText(
-                                                                        getCarContext(),
-                                                                        "Clicked Settings",
-                                                                        LENGTH_LONG)
-                                                                        .show())
-                                                .build())
+                                .addAction(settings)
                                 .build())
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PaneTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PaneTemplateDemoScreen.java
index 8a3358c..ea98c9f 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PaneTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PaneTemplateDemoScreen.java
@@ -77,19 +77,19 @@
             case 0:
                 // Row with a large image.
                 return new Row.Builder()
-                        .setTitle("Row with a large image and long text long text long text long "
-                                + "text long text")
-                        .addText("Text text text")
-                        .addText("Text text text")
+                        .setTitle(getCarContext().getString(R.string.first_row_title))
+                        .addText(getCarContext().getString(R.string.first_row_text))
+                        .addText(getCarContext().getString(R.string.first_row_text))
                         .setImage(new CarIcon.Builder(mRowLargeIcon).build())
                         .build();
             default:
                 return new Row.Builder()
-                        .setTitle("Row title " + (index + 1))
-                        .addText("Row text 1")
-                        .addText("Row text 2")
+                        .setTitle(
+                                getCarContext().getString(R.string.other_row_title_prefix) + (index
+                                        + 1))
+                        .addText(getCarContext().getString(R.string.other_row_text))
+                        .addText(getCarContext().getString(R.string.other_row_text))
                         .build();
-
         }
     }
 
@@ -114,13 +114,13 @@
         paneBuilder.setImage(new CarIcon.Builder(mPaneImage).build());
 
         Action.Builder primaryActionBuilder = new Action.Builder()
-                .setTitle("Search")
+                .setTitle(getCarContext().getString(R.string.search_action_title))
                 .setBackgroundColor(CarColor.BLUE)
                 .setOnClickListener(
                         () -> CarToast.makeText(
-                                getCarContext(),
-                                "Search/Primary button pressed",
-                                LENGTH_SHORT)
+                                        getCarContext(),
+                                        getCarContext().getString(R.string.search_toast_msg),
+                                        LENGTH_SHORT)
                                 .show());
         if (getCarContext().getCarAppApiLevel() >= CarAppApiLevels.LEVEL_4) {
             primaryActionBuilder.setFlags(FLAG_PRIMARY);
@@ -130,12 +130,13 @@
                 .addAction(primaryActionBuilder.build())
                 .addAction(
                         new Action.Builder()
-                                .setTitle("Options")
+                                .setTitle(getCarContext().getString(R.string.options_action_title))
                                 .setOnClickListener(
                                         () -> CarToast.makeText(
-                                                getCarContext(),
-                                                "Options button pressed",
-                                                LENGTH_SHORT)
+                                                        getCarContext(),
+                                                        getCarContext().getString(
+                                                                R.string.options_toast_msg),
+                                                        LENGTH_SHORT)
                                                 .show())
                                 .build());
 
@@ -143,23 +144,23 @@
                 .setHeaderAction(Action.BACK)
                 .setActionStrip(
                         new ActionStrip.Builder()
-                                .addAction(
-                                        new Action.Builder()
-                                                .setTitle("Commute")
-                                                .setIcon(
-                                                        new CarIcon.Builder(mCommuteIcon)
-                                                                .setTint(CarColor.BLUE)
-                                                                .build())
-                                                .setOnClickListener(
-                                                        () -> CarToast.makeText(
+                                .addAction(new Action.Builder()
+                                        .setTitle(getCarContext().getString(
+                                                R.string.commute_action_title))
+                                        .setIcon(
+                                                new CarIcon.Builder(mCommuteIcon)
+                                                        .setTint(CarColor.BLUE)
+                                                        .build())
+                                        .setOnClickListener(
+                                                () -> CarToast.makeText(
                                                                 getCarContext(),
-                                                                "Commute button"
-                                                                        + " pressed",
+                                                                getCarContext().getString(
+                                                                        R.string.commute_toast_msg),
                                                                 LENGTH_SHORT)
-                                                                .show())
-                                                .build())
+                                                        .show())
+                                        .build())
                                 .build())
-                .setTitle("Pane Template Demo")
+                .setTitle(getCarContext().getString(R.string.pane_template_demo_title))
                 .build();
     }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateBrowseDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateBrowseDemoScreen.java
index 250b970..1f595be 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateBrowseDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateBrowseDemoScreen.java
@@ -36,6 +36,7 @@
 import androidx.car.app.model.PlaceListMapTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.core.location.LocationListenerCompat;
 import androidx.lifecycle.DefaultLifecycleObserver;
 import androidx.lifecycle.LifecycleOwner;
@@ -88,7 +89,7 @@
                             mLocationUpdateHandlerThread.getLooper());
                 } else {
                     CarToast.makeText(carContext,
-                            "Grant location Permission to see current location",
+                            getCarContext().getString(R.string.grant_location_permission_toast_msg),
                             CarToast.LENGTH_LONG).show();
                 }
             }
@@ -108,14 +109,14 @@
         PlaceListMapTemplate.Builder builder = new PlaceListMapTemplate.Builder()
                 .setItemList(new ItemList.Builder()
                         .addItem(new Row.Builder()
-                                .setTitle("Browse Places")
+                                .setTitle(getCarContext().getString(R.string.browse_places_title))
                                 .setBrowsable(true)
                                 .setOnClickListener(
                                         () -> getScreenManager().push(
                                                 new PlaceListTemplateDemoScreen(
                                                         getCarContext()))).build())
                         .build())
-                .setTitle("Place List Template Demo")
+                .setTitle(getCarContext().getString(R.string.place_list_template_demo_title))
                 .setHeaderAction(Action.BACK)
                 .setCurrentLocationEnabled(mHasPermissionLocation);
 
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateDemoScreen.java
index 67bf423..a64bf4a 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/PlaceListTemplateDemoScreen.java
@@ -22,6 +22,7 @@
 import androidx.car.app.model.Action;
 import androidx.car.app.model.PlaceListMapTemplate;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 import androidx.car.app.sample.showcase.common.common.SamplePlaces;
 
 /** Creates a screen using the {@link PlaceListMapTemplate} */
@@ -38,7 +39,7 @@
     public Template onGetTemplate() {
         return new PlaceListMapTemplate.Builder()
                 .setItemList(mPlaces.getPlaceList())
-                .setTitle("Place List Template Demo")
+                .setTitle(getCarContext().getString(R.string.place_list_template_demo_title))
                 .setHeaderAction(Action.BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SearchTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SearchTemplateDemoScreen.java
index 6f5a9e1..81e729d 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SearchTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SearchTemplateDemoScreen.java
@@ -29,6 +29,7 @@
 import androidx.car.app.model.SearchTemplate;
 import androidx.car.app.model.SearchTemplate.SearchCallback;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** A screen that demonstrates the search template. */
 public class SearchTemplateDemoScreen extends Screen {
@@ -44,9 +45,9 @@
         for (int i = 1; i <= 6; ++i) {
             listBuilder.addItem(
                     new Row.Builder()
-                            .setTitle("Title " + i)
-                            .addText("First line of text")
-                            .addText("Second line of text")
+                            .setTitle(getCarContext().getString(R.string.title_prefix) + " " + i)
+                            .addText(getCarContext().getString(R.string.first_line_text))
+                            .addText(getCarContext().getString(R.string.second_line_text))
                             .build());
         }
 
@@ -64,19 +65,19 @@
         ActionStrip actionStrip = new ActionStrip.Builder()
                 .addAction(
                         new Action.Builder()
-                                .setTitle("Settings")
+                                .setTitle(getCarContext().getString(R.string.settings_action_title))
                                 .setOnClickListener(
-                                        () ->
-                                                CarToast.makeText(
+                                        () -> CarToast.makeText(
                                                         getCarContext(),
-                                                        "Clicked Settings",
+                                                        getCarContext().getString(
+                                                                R.string.settings_toast_msg),
                                                         LENGTH_LONG)
-                                                        .show())
+                                                .show())
                                 .build())
                 .build();
 
         return new SearchTemplate.Builder(searchListener)
-                .setSearchHint("Search here")
+                .setSearchHint(getCarContext().getString(R.string.search_hint))
                 .setHeaderAction(Action.BACK)
                 .setShowKeyboardByDefault(false)
                 .setItemList(listBuilder.build())
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SignInTemplateDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SignInTemplateDemoScreen.java
index ceebedb..6722f14 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SignInTemplateDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/templates/SignInTemplateDemoScreen.java
@@ -45,53 +45,19 @@
 
 /** A screen that demonstrates the sign-in template. */
 public class SignInTemplateDemoScreen extends Screen {
-    private enum State {
-        USERNAME,
-        PASSWORD,
-        PIN,
-        PROVIDER,
-        QR_CODE,
-        SIGNED_IN,
-    }
-
     private static final String EMAIL_REGEXP = "^(.+)@(.+)$";
     private static final String EXPECTED_PASSWORD = "password";
     private static final int MIN_USERNAME_LENGTH = 5;
-
+    private final CharSequence mAdditionalText;
+    private final Action mProviderSignInAction;
+    private final Action mPinSignInAction;
+    private final Action mQRCodeSignInAction;
     // package private to avoid synthetic accessor
     State mState = State.USERNAME;
     String mLastErrorMessage = ""; // last displayed error message
     String mErrorMessage = "";
     String mUsername = null;
 
-    private final CharSequence mAdditionalText = Utils.clickable("Please review our terms of "
-                    + "service", 18, 16,
-            () -> getScreenManager().push(new LongMessageTemplateDemoScreen(getCarContext())));
-
-    private final Action mProviderSignInAction = new Action.Builder()
-            .setTitle("Google sign-in")
-            .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
-                mState = State.PROVIDER;
-                invalidate();
-            }))
-            .build();
-
-    private final Action mPinSignInAction = new Action.Builder()
-            .setTitle("Use PIN")
-            .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
-                mState = State.PIN;
-                invalidate();
-            }))
-            .build();
-
-    private final Action mQRCodeSignInAction = new Action.Builder()
-            .setTitle("QR Code")
-            .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
-                mState = State.QR_CODE;
-                invalidate();
-            }))
-            .build();
-
     public SignInTemplateDemoScreen(@NonNull CarContext carContext) {
         super(carContext);
 
@@ -110,14 +76,44 @@
             }
         };
         carContext.getOnBackPressedDispatcher().addCallback(this, callback);
+
+        mAdditionalText = Utils.clickable(getCarContext().getString(R.string.additional_text), 18,
+                16,
+                () -> getScreenManager().push(new LongMessageTemplateDemoScreen(getCarContext())));
+
+        mProviderSignInAction = new Action.Builder()
+                .setTitle(getCarContext().getString(R.string.google_sign_in))
+                .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
+                    mState = State.PROVIDER;
+                    invalidate();
+                }))
+                .build();
+
+        mPinSignInAction = new Action.Builder()
+                .setTitle(getCarContext().getString(R.string.use_pin))
+                .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
+                    mState = State.PIN;
+                    invalidate();
+                }))
+                .build();
+
+        mQRCodeSignInAction = new Action.Builder()
+                .setTitle(getCarContext().getString(R.string.qr_code))
+                .setOnClickListener(ParkedOnlyOnClickListener.create(() -> {
+                    mState = State.QR_CODE;
+                    invalidate();
+                }))
+                .build();
     }
 
     @NonNull
     @Override
     public Template onGetTemplate() {
         if (getCarContext().getCarAppApiLevel() < CarAppApiLevels.LEVEL_2) {
-            return new MessageTemplate.Builder("Your host doesn't support Sign In template")
-                    .setTitle("Incompatible host")
+            return new MessageTemplate.Builder(
+                    getCarContext().getString(R.string.sign_in_template_not_supported_text))
+                    .setTitle(getCarContext().getString(
+                            R.string.sign_in_template_not_supported_title))
                     .setHeaderAction(Action.BACK)
                     .build();
         }
@@ -168,7 +164,7 @@
         };
 
         InputSignInMethod.Builder builder = new InputSignInMethod.Builder(listener)
-                .setHint("Email")
+                .setHint(getCarContext().getString(R.string.email_hint))
                 .setKeyboardType(InputSignInMethod.KEYBOARD_EMAIL);
         if (mErrorMessage != null) {
             builder.setErrorMessage(mErrorMessage);
@@ -183,8 +179,8 @@
                 .addAction(mProviderSignInAction)
                 .addAction(getCarContext().getCarAppApiLevel() > CarAppApiLevels.LEVEL_3
                         ? mQRCodeSignInAction : mPinSignInAction)
-                .setTitle("Sign in")
-                .setInstructions("Enter your credentials")
+                .setTitle(getCarContext().getString(R.string.sign_in_title))
+                .setInstructions(getCarContext().getString(R.string.sign_in_instructions))
                 .setHeaderAction(Action.BACK)
                 .setAdditionalText(mAdditionalText)
                 .build();
@@ -196,10 +192,10 @@
      */
     String validateUsername() {
         if (mUsername == null || mUsername.length() < MIN_USERNAME_LENGTH) {
-            return "User name must be at least " + MIN_USERNAME_LENGTH + " characters "
-                    + "long";
+            return getCarContext().getString(R.string.invalid_length_error_msg,
+                    Integer.toString(MIN_USERNAME_LENGTH));
         } else if (!mUsername.matches(EMAIL_REGEXP)) {
-            return "User name must be a valid email address";
+            return getCarContext().getString(R.string.invalid_email_error_msg);
         } else {
             return "";
         }
@@ -228,7 +224,7 @@
             public void onInputSubmitted(@NonNull String text) {
                 // Mocked password validation
                 if (!EXPECTED_PASSWORD.equals(text)) {
-                    mErrorMessage = "Invalid password";
+                    mErrorMessage = getCarContext().getString(R.string.invalid_password_error_msg);
                 } else {
                     mErrorMessage = "";
                     mState = State.SIGNED_IN;
@@ -237,7 +233,7 @@
             }
         };
         InputSignInMethod.Builder builder = new InputSignInMethod.Builder(callback)
-                .setHint("Password")
+                .setHint(getCarContext().getString(R.string.password_hint))
                 .setInputType(InputSignInMethod.INPUT_TYPE_PASSWORD);
         if (mErrorMessage != null) {
             builder.setErrorMessage(mErrorMessage);
@@ -248,8 +244,10 @@
                 .addAction(mProviderSignInAction)
                 .addAction(getCarContext().getCarAppApiLevel() > CarAppApiLevels.LEVEL_3
                         ? mQRCodeSignInAction : mPinSignInAction)
-                .setTitle("Sign in")
-                .setInstructions("Username: " + mUsername)
+                .setTitle(getCarContext().getString(R.string.sign_in_title))
+                .setInstructions(
+                        getCarContext().getString(R.string.password_sign_in_instruction_prefix)
+                                + ": " + mUsername)
                 .setHeaderAction(Action.BACK)
                 .setAdditionalText(mAdditionalText)
                 .build();
@@ -258,8 +256,8 @@
     private Template getPinSignInTemplate() {
         PinSignInMethod pinSignInMethod = new PinSignInMethod("123456789ABC");
         return new SignInTemplate.Builder(pinSignInMethod)
-                .setTitle("Sign in")
-                .setInstructions("Type this PIN in your phone")
+                .setTitle(getCarContext().getString(R.string.sign_in_title))
+                .setInstructions(getCarContext().getString(R.string.pin_sign_in_instruction))
                 .setHeaderAction(Action.BACK)
                 .setAdditionalText(mAdditionalText)
                 .build();
@@ -269,7 +267,7 @@
         QRCodeSignInMethod qrCodeSignInMethod = new QRCodeSignInMethod(Uri.parse("https://www"
                 + ".youtube.com/watch?v=dQw4w9WgXcQ"));
         return new SignInTemplate.Builder(qrCodeSignInMethod)
-                .setTitle("Scan QR Code to sign in")
+                .setTitle(getCarContext().getString(R.string.qr_code_sign_in_title))
                 .setHeaderAction(Action.BACK)
                 .setAdditionalText(mAdditionalText)
                 .addAction(mPinSignInAction)
@@ -284,7 +282,8 @@
 
         ProviderSignInMethod providerSignInMethod = new ProviderSignInMethod(
                 new Action.Builder()
-                        .setTitle(Utils.colorize("Sign in with Google",
+                        .setTitle(Utils.colorize(
+                                getCarContext().getString(R.string.sign_in_with_google_title),
                                 CarColor.createCustom(Color.BLACK, Color.BLACK), 0, 19))
                         .setBackgroundColor(CarColor.createCustom(Color.WHITE, Color.WHITE))
                         .setIcon(new CarIcon.Builder(providerIcon)
@@ -294,8 +293,8 @@
                                 this::performSignInWithGoogleFlow)).build());
 
         return new SignInTemplate.Builder(providerSignInMethod)
-                .setTitle("Sign in")
-                .setInstructions("Use this button to complete your Google sign-in")
+                .setTitle(getCarContext().getString(R.string.sign_in_title))
+                .setInstructions(getCarContext().getString(R.string.provider_sign_in_instruction))
                 .setHeaderAction(Action.BACK)
                 .setAdditionalText(mAdditionalText)
                 .build();
@@ -324,16 +323,19 @@
 //                        .setClass(getCarContext(), SignInWithGoogleActivity.class)
 //                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
 //                        .putExtras(extras));
-        CarToast.makeText(getCarContext(), "Sign-in with Google starts here", LENGTH_LONG)
+        CarToast.makeText(getCarContext(),
+                        getCarContext().getString(R.string.sign_in_with_google_toast_msg),
+                        LENGTH_LONG)
                 .show();
     }
 
     private MessageTemplate getSignInCompletedMessageTemplate() {
-        return new MessageTemplate.Builder("You are signed in!")
-                .setTitle("Sign in completed")
+        return new MessageTemplate.Builder(
+                getCarContext().getString(R.string.sign_in_complete_text))
+                .setTitle(getCarContext().getString(R.string.sign_in_complete_title))
                 .setHeaderAction(Action.BACK)
                 .addAction(new Action.Builder()
-                        .setTitle("Sign out")
+                        .setTitle(getCarContext().getString(R.string.sign_out_action_title))
                         .setOnClickListener(() -> {
                             mState = State.USERNAME;
                             invalidate();
@@ -342,4 +344,13 @@
                 .build();
     }
 
+    private enum State {
+        USERNAME,
+        PASSWORD,
+        PIN,
+        PROVIDER,
+        QR_CODE,
+        SIGNED_IN,
+    }
+
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/ContentProviderIconsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/ContentProviderIconsDemoScreen.java
index 82c327c..cc9a480 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/ContentProviderIconsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/ContentProviderIconsDemoScreen.java
@@ -35,13 +35,12 @@
 
 /** Creates a screen that demonstrate the image loading in the library using a content provider. */
 public final class ContentProviderIconsDemoScreen extends Screen {
-    @Nullable
-    private final String mHostPackageName;
-
     private static final int[] ICON_DRAWABLES = {
             R.drawable.arrow_right_turn, R.drawable.arrow_straight, R.drawable.ic_i5,
             R.drawable.ic_520
     };
+    @Nullable
+    private final String mHostPackageName;
 
     public ContentProviderIconsDemoScreen(@NonNull CarContext carContext) {
         super(carContext);
@@ -58,7 +57,8 @@
         String hostPackageName = mHostPackageName;
         if (hostPackageName == null) {
             // Cannot get the host package name, show an error message.
-            listBuilder.setNoItemsMessage("Images cannot be displayed for an unknown host");
+            listBuilder.setNoItemsMessage(
+                    getCarContext().getString(R.string.images_unknown_host_error));
         } else {
             for (int i = 0; i < ICON_DRAWABLES.length; i++) {
                 int resId = ICON_DRAWABLES[i];
@@ -70,7 +70,9 @@
                                         new CarIcon.Builder(
                                                 IconCompat.createWithContentUri(uri))
                                                 .build())
-                                .setTitle("Icon " + i)
+                                .setTitle(
+                                        getCarContext().getString(R.string.icon_title_prefix) + " "
+                                                + i)
                                 .build());
             }
         }
@@ -78,7 +80,7 @@
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Content Provider Icons Demo")
+                .setTitle(getCarContext().getString(R.string.content_provider_icons_demo_title))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/IconsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/IconsDemoScreen.java
index d3802d9..dbd49b9 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/IconsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/IconsDemoScreen.java
@@ -46,7 +46,7 @@
         listBuilder.addItem(
                 new Row.Builder()
                         .setImage(new CarIcon.Builder(CarIcon.APP_ICON).build())
-                        .setTitle("The app icon")
+                        .setTitle(getCarContext().getString(R.string.app_icon_title))
                         .build());
 
         listBuilder.addItem(
@@ -58,7 +58,7 @@
                                                 R.drawable.ic_fastfood_white_48dp))
                                         .build(),
                                 Row.IMAGE_TYPE_ICON)
-                        .setTitle("A vector drawable, without a tint")
+                        .setTitle(getCarContext().getString(R.string.vector_no_tint_title))
                         .build());
 
         listBuilder.addItem(
@@ -70,7 +70,7 @@
                                                 R.drawable.ic_fastfood_white_48dp))
                                         .setTint(GREEN)
                                         .build())
-                        .setTitle("A vector drawable, with a tint")
+                        .setTitle(getCarContext().getString(R.string.vector_with_tint_title))
                         .build());
 
         listBuilder.addItem(
@@ -81,7 +81,8 @@
                                                 getCarContext(),
                                                 R.drawable.ic_themed_icon_48dp))
                                         .build())
-                        .setTitle("A vector drawable, with an app's theme attribute for its color")
+                        .setTitle(getCarContext()
+                                .getString(R.string.vector_with_app_theme_attr_title))
                         .build());
 
         listBuilder.addItem(
@@ -91,7 +92,7 @@
                                         IconCompat.createWithResource(
                                                 getCarContext(), R.drawable.banana))
                                         .build())
-                        .setTitle("A PNG, sent as a resource")
+                        .setTitle(getCarContext().getString(R.string.png_res_title))
                         .build());
 
         listBuilder.addItem(
@@ -103,12 +104,12 @@
                                                         getCarContext().getResources(),
                                                         R.drawable.banana)))
                                         .build())
-                        .setTitle("A PNG, sent as a bitmap")
+                        .setTitle(getCarContext().getString(R.string.png_bitmap_title))
                         .build());
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Icons Demo")
+                .setTitle(getCarContext().getString(R.string.icons_demo_title))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/RowDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/RowDemoScreen.java
index 9c074f3..643a8fb 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/RowDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/RowDemoScreen.java
@@ -44,21 +44,37 @@
         getLifecycle().addObserver(this);
     }
 
+    private static CharSequence getRatingsString(Double ratings) {
+        String s;
+        double r;
+        for (s = "", r = ratings; r > 0; --r) {
+            s += r < 1 ? HALF_STAR : FULL_STAR;
+        }
+        SpannableString ss = new SpannableString(s + " ratings: " + ratings);
+        if (!s.isEmpty()) {
+            Utils.colorize(ss, YELLOW, 0, s.length());
+        }
+        return ss;
+    }
+
     @NonNull
     @Override
     public Template onGetTemplate() {
         ItemList.Builder listBuilder = new ItemList.Builder();
 
-        listBuilder.addItem(new Row.Builder().setTitle("Just a title").build());
+        listBuilder.addItem(new Row.Builder()
+                .setTitle(getCarContext().getString(R.string.just_row_title))
+                .build());
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Title with app icon")
+                        .setTitle(getCarContext().getString(R.string.title_with_app_icon_row_title))
                         .setImage(CarIcon.APP_ICON)
                         .build());
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Title with resource ID image")
+                        .setTitle(getCarContext().getString(
+                                R.string.title_with_res_id_image_row_title))
                         .setImage(
                                 new CarIcon.Builder(
                                         IconCompat.createWithResource(
@@ -70,7 +86,8 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Title with SVG image")
+                        .setTitle(
+                                getCarContext().getString(R.string.title_with_svg_image_row_title))
                         .setImage(
                                 new CarIcon.Builder(
                                         IconCompat.createWithResource(
@@ -83,34 +100,24 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Title with multiple secondary text lines")
-                        .addText("Err and err and err again, but less and less and less.")
-                        .addText("- Piet Hein")
+                        .setTitle(getCarContext().getString(
+                                R.string.title_with_secondary_lines_row_title))
+                        .addText(getCarContext().getString(
+                                R.string.title_with_secondary_lines_row_text_1))
+                        .addText(getCarContext().getString(
+                                R.string.title_with_secondary_lines_row_text_2))
                         .build());
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Colored secondary text")
+                        .setTitle(getCarContext().getString(R.string.colored_secondary_row_title))
                         .addText(getRatingsString(3.5))
                         .build());
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Rows Demo")
+                .setTitle(getCarContext().getString(R.string.rows_demo_title))
                 .setHeaderAction(BACK)
                 .build();
     }
-
-    private static CharSequence getRatingsString(Double ratings) {
-        String s;
-        double r;
-        for (s = "", r = ratings; r > 0; --r) {
-            s += r < 1 ? HALF_STAR : FULL_STAR;
-        }
-        SpannableString ss = new SpannableString(s + " ratings: " + ratings);
-        if (!s.isEmpty()) {
-            Utils.colorize(ss, YELLOW, 0, s.length());
-        }
-        return ss;
-    }
 }
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/TextAndIconsDemosScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/TextAndIconsDemosScreen.java
index 028defe..39b81ba 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/TextAndIconsDemosScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/textandicons/TextAndIconsDemosScreen.java
@@ -25,6 +25,7 @@
 import androidx.car.app.model.ListTemplate;
 import androidx.car.app.model.Row;
 import androidx.car.app.model.Template;
+import androidx.car.app.sample.showcase.common.R;
 
 /** Creates a screen that shows different types of texts and icons. */
 public final class TextAndIconsDemosScreen extends Screen {
@@ -39,14 +40,15 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Icons Demo")
+                        .setTitle(getCarContext().getString(R.string.icons_demo_title))
                         .setOnClickListener(
                                 () -> getScreenManager().push(new IconsDemoScreen(getCarContext())))
                         .build());
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Content Provider Icons Demo")
+                        .setTitle(getCarContext().getString(
+                                R.string.content_provider_icons_demo_title))
                         .setOnClickListener(
                                 () ->
                                         getScreenManager()
@@ -57,14 +59,14 @@
 
         listBuilder.addItem(
                 new Row.Builder()
-                        .setTitle("Rows with Text and Icons Demo")
+                        .setTitle(getCarContext().getString(R.string.row_text_icons_demo_title))
                         .setOnClickListener(
                                 () -> getScreenManager().push(new RowDemoScreen(getCarContext())))
                         .build());
 
         return new ListTemplate.Builder()
                 .setSingleList(listBuilder.build())
-                .setTitle("Text and Icons Demos")
+                .setTitle(getCarContext().getString(R.string.text_icons_demo_title))
                 .setHeaderAction(BACK)
                 .build();
     }
diff --git a/car/app/app-samples/showcase/common/src/main/res/values/strings.xml b/car/app/app-samples/showcase/common/src/main/res/values/strings.xml
index 8a919bd..4b593a6 100644
--- a/car/app/app-samples/showcase/common/src/main/res/values/strings.xml
+++ b/car/app/app-samples/showcase/common/src/main/res/values/strings.xml
@@ -16,4 +16,377 @@
 -->
 <resources>
   <string name="app_name" translatable="false">Showcase</string>
+
+  <!-- Action Titles -->
+  <string name="back_caps_action_title">BACK</string>
+  <string name="home_caps_action_title">HOME</string>
+  <string name="exit_action_title">Exit</string>
+  <string name="refresh_action_title">Refresh</string>
+  <string name="close_action_title">Close</string>
+  <string name="grant_access_action_title">Grant Access</string>
+  <string name="enable_location_action_title">Enable Location</string>
+  <string name="cancel_action_title">Cancel</string>
+  <string name="stop_action_title">Stop</string>
+  <string name="more_action_title">More</string>
+  <string name="call_action_title">Call</string>
+  <string name="primary_action_title">Primary</string>
+  <string name="options_action_title">Options</string>
+  <string name="search_action_title">Search</string>
+  <string name="checked_action_title">Checked</string>
+  <string name="unchecked_action_title">Unchecked</string>
+  <string name="on_action_title">On</string>
+  <string name="off_action_title">Off</string>
+  <string name="settings_action_title">Settings</string>
+  <string name="accept_action_title">Settings</string>
+  <string name="reject_action_title">Reject</string>
+  <string name="ok_action_title">OK</string>
+  <string name="throw_action_title">Throw</string>
+  <string name="commute_action_title">Commute</string>
+  <string name="sign_out_action_title">Sign out</string>
+  <string name="try_anyway_action_title">Try Anyway</string>
+
+  <!-- Toast Messages -->
+  <string name="bug_reported_toast_msg">Bug reported!</string>
+  <string name="zoomed_in_toast_msg">Zoomed in</string>
+  <string name="zoomed_out_toast_msg">Zoomed out</string>
+  <string name="triggered_toast_msg">Triggered</string>
+  <string name="primary_toast_msg">Primary button pressed</string>
+  <string name="search_toast_msg">Search button pressed</string>
+  <string name="options_toast_msg">Options button pressed</string>
+  <string name="favorite_toast_msg">Favorite!</string>
+  <string name="not_favorite_toast_msg">Not a favorite!</string>
+  <string name="nav_requested_toast_msg">Navigation Requested</string>
+  <string name="selected_route_toast_msg">Selected route</string>
+  <string name="visible_routes_toast_msg">Visible routes</string>
+  <string name="second_item_toast_msg">Clicked second item</string>
+  <string name="third_item_checked_toast_msg">Third item checked</string>
+  <string name="fifth_item_checked_toast_msg">Fifth item checked</string>
+  <string name="sixth_item_toast_msg">Clicked sixth item</string>
+  <string name="settings_toast_msg">Clicked Settings</string>
+  <string name="parked_toast_msg">Parked action</string>
+  <string name="more_toast_msg">Clicked More</string>
+  <string name="commute_toast_msg">Commute button pressed</string>
+  <string name="grant_location_permission_toast_msg">Grant location Permission to see current location</string>
+  <string name="sign_in_with_google_toast_msg">Sign-in with Google starts here</string>
+  <string name="changes_selection_to_index_toast_msg_prefix">Changed selection to index</string>
+
+  <!-- Row text -->
+  <string name="first_row_title">Row with a large image and long text long text long text long text long text</string>
+  <string name="first_row_text">Text text text</string>
+  <string name="other_row_title_prefix">Row title </string>
+  <string name="other_row_text">Row text</string>
+
+  <!-- Place Details Screen -->
+  <string name="navigate">Navigate</string>
+  <string name="dial">Dial</string>
+  <string name="address">Address</string>
+  <string name="phone">Phone</string>
+
+  <!-- CarHardwareDemoScreen -->
+  <string name="fail_start_nav">Failure starting navigation</string>
+  <string name="fail_start_dialer">Failure starting dialer</string>
+  <string name="car_hardware_demo_title">Car Hardware Demo</string>
+
+  <!-- CarHardwareInfoScreen -->
+  <string name="car_hardware_info">Car Hardware Information</string>
+  <string name="model_info">Model Information</string>
+  <string name="no_model_permission">No Model Permission</string>
+  <string name="manufacturer_unavailable">Manufacturer unavailable</string>
+  <string name="model_unavailable">Model unavailable</string>
+  <string name="year_unavailable">Year unavailable</string>
+  <string name="energy_profile">Energy Profile</string>
+  <string name="no_energy_profile_permission">No Energy Profile Permission</string>
+  <string name="fuel_types">Fuel Types</string>
+  <string name="unavailable">Unavailable</string>
+  <string name="ev_connector_types">EV Connector Types</string>
+
+  <!-- ColorDemoScreen -->
+  <string name="example_title">Example %d</string>
+  <string name="example_1_text">This text has a red color</string>
+  <string name="example_2_text">This text has a green color</string>
+  <string name="example_3_text">This text has a blue color</string>
+  <string name="example_4_text">This text has a yellow color</string>
+  <string name="example_5_text">This text uses the primary colo</string>
+  <string name="example_6_text">This text uses the secondary color</string>
+  <string name="color_demo">Color Demo</string>
+
+  <!-- ContentLimitsDemoScreen -->
+  <string name="list_limit">List Limit</string>
+  <string name="grid_limit">Grid Limit</string>
+  <string name="pane_limit">Pane Limit</string>
+  <string name="place_list_limit">Place List Limit</string>
+  <string name="route_list_limit">Route List Limit</string>
+  <string name="content_limits">Content Limits</string>
+  <string name="content_limits_demo_title">Content Limits Demo</string>
+
+  <!-- FinishAppScreen -->
+  <string name="finish_app_msg">This will finish the app, and when you return it will pre-seed a permission screen</string>
+  <string name="finish_app_title">Finish App Demo</string>
+  <string name="finish_app_demo_title">Pre-seed the Screen backstack on next run Demo</string>
+
+  <!-- LoadingDemoScreen -->
+  <string name="loading_demo_title">Loading Demo</string>
+  <string name="loading_demo_row_title">Loading Complete!</string>
+
+  <!-- PopToDemoScreen -->
+  <string name="pop_to_root">Pop to root</string>
+  <string name="pop_to_marker">Pop to Misc Demo Marker</string>
+  <string name="push_stack">Push further in stack</string>
+  <string name="pop_to_prefix">Pop To </string>
+  <string name="pop_to_title">PopTo Demo</string>
+
+  <!-- RequestPermissionScreen -->
+  <string name="package_not_found_error_msg">Package Not found.</string>
+  <string name="permissions_granted_msg">All permissions have been granted. Please revoke permissions from Settings.</string>
+  <string name="needs_access_msg_prefix">The app needs access to the following permissions:\n</string>
+  <string name="phone_screen_permission_msg">Grant Permission on the phone screen</string>
+  <string name="enable_location_permission_on_device_msg">Enable Location Permissions on device</string>
+  <string name="enable_location_permission_on_phone_msg">Enable location on the phone screen</string>
+  <string name="required_permissions_title">Required Permissions</string>
+  <string name="request_permissions_title">Request Permission Demo</string>
+
+  <!-- ReservationCancelledScreen -->
+  <string name="cancel_reservation_title">Cancel Reservation Screen</string>
+  <string name="reservation_cancelled_msg">Reservation canceled</string>
+
+  <!-- ResultDemoScreen -->
+  <string name="result_demo_title">Result demo</string>
+  <string name="not_started_for_result_msg">This app was not started for result</string>
+  <string name="started_for_result_msg">This app was called for result from %s. Please select the result to send back to the caller</string>
+
+  <!-- ArrivedDemoScreen -->
+  <string name="arrived_exclamation_msg">Arrived!</string>
+  <string name="arrived_address_msg">Google Bellevue Office\n1120 112th Ave NE</string>
+
+  <!-- RoutingDemoModels -->
+  <string name="current_step_cue">Roy st 520</string>
+  <string name="next_step_cue">I5 Aurora Ave N</string>
+  <string name="travel_est_trip_text">Pick Up Alice</string>
+
+  <!-- NotificationDemoScreen -->
+  <string name="send_notification_title">Send a notification</string>
+  <string name="start_notifications_title">Start notifications</string>
+  <string name="stop_notifications_title">Stop notifications</string>
+  <string name="notification_title">Notification</string>
+  <string name="importance_title">Importance</string>
+  <string name="category_title">Category</string>
+  <string name="ongoing_title">Ongoing</string>
+  <string name="notification_demo">Notification Demo</string>
+
+  <!-- MiscDemoScreen -->
+  <string name="misc_demo_title">Misc Demos</string>
+
+  <!-- NavigationTemplateDemoScreen -->
+  <string name="navigating_demo_title">Navigating Demo</string>
+  <string name="arrived_demo_title">Arrived Demo</string>
+  <string name="junction_image_demo_title">Junction Image Demo</string>
+  <string name="nav_template_demos_title">Navigation Template Demos</string>
+
+  <!-- MapTemplateDemoScreen -->
+  <string name="map_template_pane_demo_title">Map Template with Pane Demo</string>
+
+  <!-- NavigationNotificationsDemoScreen -->
+  <string name="start_notification_title">Start Notification</string>
+  <string name="stop_notification_title">Stop Notification</string>
+  <string name="nav_notification_demo_title">Navigation Notification Demo</string>
+
+  <!-- NavigationNotificationService -->
+  <string name="go_straight">Go Straight</string>
+  <string name="turn_right">Turn Right</string>
+  <string name="take_520">Take 520</string>
+  <string name="gas_station">Gas Station</string>
+
+  <!-- RoutePreviewDemoScreen -->
+  <string name="short_route">Short route</string>
+  <string name="less_busy">Less busy</string>
+  <string name="hov_friendly">HOV friendly</string>
+  <string name="long_route">Long route</string>
+  <string name="continue_start_nav">Continue to start navigation</string>
+  <string name="continue_route">Continue to route</string>
+  <string name="routes_title">Routes</string>
+
+  <!-- NavigationDemosScreen -->
+  <string name="place_list_nav_template_demo_title">Place List Navigation Template Demo</string>
+  <string name="route_preview_template_demo_title">Route Preview Template Demo</string>
+  <string name="notification_template_demo_title">Notification Template Demo</string>
+  <string name="nav_map_template_demo_title">Navigation Template with map only Demo</string>
+  <string name="nav_demos_title">Navigation Demos</string>
+
+  <!-- CarHardwareRenderer -->
+  <string name="no_toll_card_permission">No TollCard Permission.</string>
+  <string name="no_energy_level_permission">No EnergyLevel Permission.</string>
+  <string name="no_speed_permission">No Speed Permission.</string>
+  <string name="no_mileage_permission">No Mileage Permission.</string>
+  <string name="no_ev_status_permission">No EV status Permission.</string>
+  <string name="no_accelerometer_permission">No Accelerometer Permission.</string>
+  <string name="no_gyroscope_permission">No Gyroscope Permission.</string>
+  <string name="no_compass_permission">No Compass Permission.</string>
+  <string name="no_car_hardware_location">No CarHardwareLocation Permission.</string>
+  <string name="fetch_toll_info">Fetching Toll information.</string>
+  <string name="fetch_energy_level">Fetching Energy Level.</string>
+  <string name="fetch_speed">Fetching Speed.</string>
+  <string name="fetch_mileage">Fetching Mileage.</string>
+  <string name="fetch_ev_status">Fetching EV status.</string>
+  <string name="fetch_accelerometer">Fetching Accelerometer.</string>
+  <string name="fetch_gyroscope">Fetching Gyroscope.</string>
+  <string name="fetch_compass">Fetching Compass.</string>
+  <string name="fetch_location">Fetching Location.</string>
+  <string name="toll_card_state">Toll card state</string>
+  <string name="low_energy">Low energy</string>
+  <string name="range">Range</string>
+  <string name="fuel">Fuel</string>
+  <string name="battery">Battery</string>
+  <string name="display_speed">Display Speed</string>
+  <string name="raw_speed">Raw Speed</string>
+  <string name="unit">Unit</string>
+  <string name="odometer">Odometer</string>
+  <string name="ev_connected">Ev Charge Port Connected</string>
+  <string name="ev_open">Ev Charge Port Open</string>
+  <string name="accelerometer">Accelerometer</string>
+  <string name="gyroscope">Gyroscope</string>
+  <string name="compass">Compass</string>
+  <string name="car_hardware_location">Car Hardware Location</string>
+
+  <!-- GridTemplateDemoScreen -->
+  <string name="non_actionable">Non-actionable</string>
+  <string name="second_item">Second Item</string>
+  <string name="third_item">Third Item</string>
+  <string name="fourth_item">Fourth Item</string>
+  <string name="fifth_item">Fifth Item has a long title set</string>
+  <string name="sixth_item">Sixth Item has a long title set</string>
+  <string name="grid_template_demo_title">Grid Template Demo</string>
+
+  <!-- ListTemplateDemoScreen -->
+  <string name="parked_only_title">Parked Only Title</string>
+  <string name="parked_only_text">More Parked only text.</string>
+  <string name="clicked_row_prefix">Clicked row</string>
+  <string name="first_line_text">First line of text</string>
+  <string name="second_line_text">Second line of text</string>
+  <string name="title_prefix">Title</string>
+  <string name="list_template_demo_title">List Template Demo</string>
+
+  <!-- LongMessageTemplateDemoScreen -->
+  <string name="long_msg_template_demo_title">Long Message Template Demo</string>
+  <string name="long_msg_template_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. \nAliquam laoreet ac metus eu commodo. Sed a congue diam, sed dictum lectus. Nam nec\ntristique dolor, quis sodales arcu. Etiam at metus eu nulla auctor varius. \nInteger dolor lorem, placerat sit amet lacus in, imperdiet semper dui. Vestibulum \nante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; \nQuisque gravida fermentum egestas.\n\n\n\nUt ut sodales mi. Aenean porta vel ipsum sed lacinia. Morbi odio ipsum, hendrerit \neu est et, sollicitudin finibus diam. Nunc sit amet felis elit. Orci varius \nnatoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed \nvestibulum, tellus a rutrum auctor, diam arcu vestibulum purus, nec mollis ligula \nnisi in nisi. Donec sem tortor, pharetra sed fermentum sit amet, ullamcorper nec \nsapien. Aliquam risus arcu, porttitor eu dui nec, vulputate tempus libero. \nCurabitur sit amet tristique orci. Suspendisse et odio tempus, tempus turpis quis,\n euismod est.\n\n\n\nVestibulum mauris ante, luctus viverra nisi eget, blandit facilisis nulla. \nPhasellus ex lorem, semper in vestibulum nec, aliquet vel elit. Aliquam vitae \nligula nec enim dictum lobortis. Sed varius turpis quis nisi tempus varius. Sed \nnon sollicitudin magna, at mattis tortor. Curabitur quis ligula eget lorem mattis \ntincidunt et in sapien. Curabitur a elit nisi. Aliquam ex arcu, hendrerit eget \nturpis vitae, bibendum vulputate nibh. Fusce vitae ex aliquet, tristique magna eu,\n vulputate dui. Aenean tempor viverra tortor non pharetra. Pellentesque convallis \nnec risus a auctor. Praesent non sem non eros tincidunt ullamcorper efficitur non \nlacus.\n\n\n\nSuspendisse accumsan ultricies egestas. Aenean leo ligula, congue ac erat eu, \nlobortis ultricies lorem. Nulla finibus, arcu sed tincidunt lobortis, magna justo \nrutrum ligula, et mattis felis turpis vel ex. Morbi ac auctor ex, at bibendum sem.\n Vestibulum a tortor iaculis, viverra felis vitae, lobortis est. Duis sit amet \ncondimentum sem. Ut molestie, dolor pretium imperdiet maximus, enim orci porta \nquam, id gravida enim nunc vitae lacus. Pellentesque habitant morbi tristique \nsenectus et netus et malesuada fames ac turpis egestas. Nullam vel justo eu risus \nlobortis dignissim sit amet ullamcorper nulla. Donec finibus cursus purus \nporttitor pellentesque.\n\n\n\nDonec at vehicula ante. Suspendisse rutrum nisl quis metus faucibus lacinia. \nVestibulum eros sapien, eleifend nec accumsan a, interdum sed nisi. Aenean posuere\n ultrices lorem non pharetra. Nulla non porta ligula. Maecenas at elit diam. \nNullam gravida augue et semper eleifend. Fusce venenatis ac arcu et luctus. Mauris\n ultricies urna non dui interdum, vel hendrerit est aliquam. Fusce id dictum leo, \nfringilla egestas ipsum.</string>
+  <string name="long_msg_template_not_supported_text">Your host doesn\'t support Long Message template</string>
+  <string name="long_msg_template_not_supported_title">Incompatible host</string>
+
+  <!-- MessageTemplateDemoScreen -->
+  <string name="msg_template_demo_title">Message Template Demo</string>
+  <string name="msg_template_demo_text">Message goes here.\nMore text on second line.</string>
+
+  <!-- PaneTemplateDemoScreen -->
+  <string name="pane_template_demo_title">Pane Template Demo</string>
+
+  <!-- PlaceListTemplateBrowseDemoScreen -->
+  <string name="place_list_template_demo_title">Place List Template Demo</string>
+  <string name="browse_places_title">Browse Places</string>
+
+  <!-- SearchTemplateDemoScreen -->
+  <string name="search_hint">Search here</string>
+
+  <!-- SignInTemplateDemoScreen -->
+  <string name="additional_text">Please review our terms of service</string>
+  <string name="google_sign_in">Google sign-in</string>
+  <string name="use_pin">Use PIN</string>
+  <string name="qr_code">QR Code</string>
+  <string name="sign_in_template_not_supported_text">Your host doesn\'t support Sign In template</string>
+  <string name="sign_in_template_not_supported_title">Incompatible host</string>
+  <string name="email_hint">Email</string>
+  <string name="sign_in_title">Sign in</string>
+  <string name="sign_in_instructions">Enter your credentials</string>
+  <string name="invalid_email_error_msg">User name must be a valid email address</string>
+  <string name="invalid_length_error_msg">User name must be at least %s characters long</string>
+  <string name="invalid_password_error_msg">Invalid password</string>
+  <string name="password_hint">password</string>
+  <string name="password_sign_in_instruction_prefix">Username</string>
+  <string name="pin_sign_in_instruction">Type this PIN in your phone</string>
+  <string name="qr_code_sign_in_title">Scan QR Code to sign in</string>
+  <string name="sign_in_with_google_title">Sign in with Google</string>
+  <string name="provider_sign_in_instruction">Use this button to complete your Google sign-in</string>
+  <string name="sign_in_complete_text">You are signed in!</string>
+  <string name="sign_in_complete_title">Sign in completed</string>
+
+  <!-- ContentProviderIconsDemoScreen -->
+  <string name="images_unknown_host_error">Images cannot be displayed for an unknown host</string>
+  <string name="icon_title_prefix">Icon</string>
+  <string name="content_provider_icons_demo_title">Content Provider Icons Demo</string>
+
+  <!-- IconsDemoScreen -->
+  <string name="icons_demo_title">Icons Demo</string>
+  <string name="app_icon_title">The app icon</string>
+  <string name="vector_no_tint_title">A vector drawable, without a tint</string>
+  <string name="vector_with_tint_title">A vector drawable, with a tint</string>
+  <string name="vector_with_app_theme_attr_title">A vector drawable, with an app\'s theme attribute for its color</string>
+  <string name="png_res_title">A PNG, sent as a resource</string>
+  <string name="png_bitmap_title">A PNG, sent as a resource</string>
+
+  <!-- RowDemoScreen -->
+  <string name="just_row_title">Just a title</string>
+  <string name="title_with_app_icon_row_title">Title with app icon</string>
+  <string name="title_with_res_id_image_row_title">Title with resource ID image</string>
+  <string name="title_with_svg_image_row_title">Title with SVG image</string>
+  <string name="colored_secondary_row_title">Colored secondary text</string>
+  <string name="title_with_secondary_lines_row_title">Title with multiple secondary text lines</string>
+  <string name="title_with_secondary_lines_row_text_1">Err and err and err again, but less and less and less.</string>
+  <string name="title_with_secondary_lines_row_text_2">- Piet Hein</string>
+  <string name="rows_demo_title">Rows Demo</string>
+
+  <!-- TextAndIconsDemosScreen -->
+  <string name="text_icons_demo_title">Text and Icons Demos</string>
+  <string name="row_text_icons_demo_title">Rows with Text and Icons Demo</string>
+
+  <!-- SelectableListsDemoScreen -->
+  <string name="selectable_lists_demo_title">Selectable Lists Demo</string>
+  <string name="option_1_title">Option 1</string>
+  <string name="option_2_title">Option 2</string>
+  <string name="option_3_title">Option 3</string>
+  <string name="some_additional_text">Some additional text</string>
+  <string name="sample_additional_list">Sample selectable list</string>
+
+  <!-- TaskRestrictionDemoScreen -->
+  <string name="task_restriction_demo_title">Task Restriction Demo</string>
+  <string name="task_limit_reached_msg">Task limit reached\nGoing forward will force stop the app</string>
+  <string name="task_step_of_title">Task step %1$d of %2$d</string>
+  <string name="task_step_of_text">Click to go forward</string>
+  <string name="toggle_test_title">Toggle test</string>
+  <string name="toggle_test_text">Stateful changes are allowed</string>
+  <string name="image_test_title">Image test</string>
+  <string name="image_test_text">Image changes are allowed</string>
+  <string name="additional_data_title">Additional Data</string>
+  <string name="additional_data_text">Updates allows on back operations.</string>
+
+  <!-- StartScreen -->
+  <string name="misc_templates_demos_title">Misc Templates Demos</string>
+  <string name="showcase_demos_title">Showcase Demos</string>
+
+  <!-- Location Strings -->
+  <string name="location_1_title">Google Kirkland</string>
+  <string name="location_1_address" translatable="false">747 6th St South, Kirkland, WA 98033</string>
+  <string name="location_1_description">Tinted resource vector</string>
+  <string name="location_1_phone" translatable="false">+14257395600</string>
+  <string name="location_2_title">Google Bellevue</string>
+  <string name="location_2_address" translatable="false">1120 112th Ave NE, Bellevue, WA 98004</string>
+  <string name="location_2_description">Image resource bitmap</string>
+  <string name="location_2_phone" translatable="false">+14252301301</string>
+  <string name="location_3_title">Google South Lake Union</string>
+  <string name="location_3_address" translatable="false">1021 Valley St, Seattle, WA 98109</string>
+  <string name="location_3_description">Colored text marker</string>
+  <string name="location_3_phone" translatable="false">+12065311800</string>
+  <string name="location_4_title">Google Seattle</string>
+  <string name="location_4_address" translatable="false">601 N 34th St, Seattle, WA 98103</string>
+  <string name="location_4_description">Image bitmap</string>
+  <string name="location_4_phone" translatable="false">+12068761800</string>
+  <string name="location_5_address" translatable="false">1600 Amphitheatre Pkwy, Mountain View, CA 94043</string>
+  <string name="location_5_phone" translatable="false">+16502530000</string>
+  <string name="location_6_title">Google Bothell</string>
+  <string name="location_6_address" translatable="false">11831 North Creek Pkwy, Bothell, WA 98011</string>
+  <string name="location_7_title">Seward Park</string>
+  <string name="location_7_address" translatable="false">5900 Lake Washington Blvd S, Seattle, WA 98118</string>
+  <string name="location_8_title">Luther Burbank Park</string>
+  <string name="location_8_address" translatable="false">2040 84th Ave SE, Mercer Island, WA 98040</string>
+  <string name="location_9_title">Heritage Park</string>
+  <string name="location_9_address" translatable="false">111 Waverly Way, Kirkland, WA 98033</string>
+  <string name="location_description_text_label">Text label</string>
+  <string name="location_phone_not_available" translatable="false">n/a</string>
 </resources>