diff --git a/rfcs/convergence/internationalization.md b/rfcs/convergence/internationalization.md
new file mode 100644
index 00000000000000..a0463cec6a82d9
--- /dev/null
+++ b/rfcs/convergence/internationalization.md
@@ -0,0 +1,267 @@
+# RFC: Internationalization patterns
+
+---
+
+_List contributors to the proposal:_ @smhigley
+
+## Problem Statement:
+
+In v8, the custom strings authors must define to use components are all over the place, and have no standard pattern. E.g. Datepicker uses a `strings` prop and imports defaults from an in-package module
+
+Most other components define each string as a separate property, with no standard naming convention. For example:
+
+- ContextualMenu has `ariaLabel` and `ariaDescription` on menuitems
+- BasePicker uses `aria-label`
+- Button has `ariaLabel`, `ariaDescription`, `text`, `splitButtonAriaLabel`, and `secondaryText`
+- icons use `ariaLabel` for a string that isn't necessarily defined through `aria-label`.
+
+While not universally true, a lot of these strings are specifically for screen readers, which means there's a higher likelihood developers will fail to notice, define, and localize them if they're not clearly surfaced. Even when that isn't the case, it's a pain to handle localization for all components across an app when each takes strings through a different API surface.
+
+## Background
+
+### Other component libraries
+
+I looked at how other component libraries do this, and both [Material UI](https://material-ui.com/guides/localization/) and [Ant Design](https://ant.design/docs/react/i18n) take a similar approach:
+
+They both have a utility to provide or define custom locale objects that include all the strings for all applicable components. For example, this is a sample of how the [exported spanish locale object for MUI](https://unpkg.com/browse/antd@4.16.9/lib/locale/es_ES.js) is defined:
+
+```js
+var localeValues = {
+ locale: 'es',
+ global: {
+ placeholder: 'Seleccione'
+ },
+ Table: {
+ filterTitle: 'Filtrar menĂº',
+ emptyText: 'Sin datos',
+ selectAll: 'Seleccionar todo',
+ [...]
+ },
+ Modal: {
+ okText: 'Aceptar',
+ cancelText: 'Cancelar',
+ justOkText: 'Aceptar'
+ }
+ [...etc]
+}
+```
+
+Material UI includes the locale strings in their ThemeProvider, and Ant Design puts it in their ConfigProvider.
+
+Among other libraries, there are a variety of approaches to built-in string values that range from hardcoded values to per-string props:
+
+#### Libraries with no localization approach:
+
+- **Semantic UI**: didn't find built-in strings, in multiple places accnames were missing (e.g. +/- on Dimmer)
+- **FAST**: did not find built-in strings, in multiple places accnames were missing (e.g. the flipper button)
+- **Evergreen**: Hardcoded English strings, or missing labels (e.g. browse/drag copy in FileUploader, missing prev/next labels in Pagination)
+- **React Bootstrap**: English strings hardcoded (e.g. "Next", "Last" in Pagination)
+
+#### Libraries with only per-string props:
+
+- **Spectrum**: individual props (e.g. "labelX", "labelY" on ColorArea)
+- **Carbon**: a `locale` prop on datepicker, `translationIds` + `translationKeys` on other components, misc props on simpler components (e.g. `backwardText` on pagination)
+- **Atlassian**: misc props (e.g. `nextLabel`, `previousLabel` on Pagination)
+
+#### Libraries with only a provider (no props):
+
+- **Ant** (sort of): some Ant components like Upload or Table only accept localized strings through a LocaleReceiver + ConfigProvider
+
+#### Libraries with a combination of props and a provider:
+
+- **Ant**: Date/time components have `locale` prop that includes strings in addition to the LocaleReceiver + ConfigProvider approach.
+- **Material UI**: misc props on components + locale support on the theme provider (e.g. `clearText`, `closeText` on Autocomplete)
+
+### Learnings from Fluent v8
+
+The Fluent v8 approach has largely been piecemeal, with per-component props added for internal strings. There is no standard naming schema, and for authors to implement proper a11y and localization, they've needed to hunt down the string props for each component.
+
+We've had feedback, largely related to accessibility bugs, that this approach is onerous and frustrating to authors. There has been some frustration expressed specifically around the experience of feeling like there is a "gotcha" nature to accessibility where our components technically support accessible labels, but authors need to really dig to find out how to implement them.
+
+### i18n libraries
+
+Two of the most common i18n packages for React independent of component libraries are `react-i18next` (a react wrapper for i18next), and `react-intl`. Both provide a helper function to format a string -- at the most basic, they take a key and return a localized string. The most basic usage looks like this for each library:
+
+react-i18next:
+
+```js
+import { useTranslation } from 'react-i18next';
+
+const Component = () => {
+ const { t } = useTranslation();
+
+ return
;
+};
+```
+
+Both also provide extras like React components as an alternative to the function, and helpers for things like dates, string template value replacement, SSR, etc. Those likely aren't relevant to Fluent, since we'll either not use them in the case of the component or SSR, or provide our own solution for dates/string templates.
+
+## Proposal
+
+We can split work on this into three phases:
+
+### 1. A prop for overriding internal strings
+
+Most other libraries that have i18n solutions include some sort of props-based approach. Based on the feedback received from Fluent v8, it seems best to make this a standard prop across all components that have internal strings.
+
+The specific name for this prop could be `strings` (which matches the Fluent v8 Datepicker), `locale` (which matches a couple other libraries), or something else entirely.
+
+The benefits to providing a prop on individual components vs. a provider-only solution include:
+
+- It is easier to use a few Fluent controls in isolation, e.g. within an app that also uses controls from another library
+- It provides greater control and flexibility. For example, if a team were using a third-party solution with more complex logic than a built-in Fluent string provider, they could always override strings at a component level.
+- We can ship components with internal strings now, and then integrate a string provider in the future
+
+The benefits of a single `strings`/`locale`/`someSortOfLabel` prop over requiring authors to manually figure out `aria-*`/`