1import {
2  AndroidConfig,
3  ConfigPlugin,
4  createRunOncePlugin,
5  withStringsXml,
6} from 'expo/config-plugins';
7
8const pkg = require('expo-localization/package.json');
9
10const withExpoLocalization: ConfigPlugin = (config) => {
11  if (config.extra?.supportsRTL == null) return config;
12  if (!config.ios) config.ios = {};
13  if (!config.ios.infoPlist) config.ios.infoPlist = {};
14  config.ios.infoPlist.ExpoLocalization_supportsRTL = config.extra?.supportsRTL || false;
15
16  return withStringsXml(config, (config) => {
17    config.modResults = AndroidConfig.Strings.setStringItem(
18      [
19        // XML represented as JSON
20        // <string name="expo_custom_value" translatable="false">value</string>
21        {
22          $: { name: 'ExpoLocalization_supportsRTL', translatable: 'false' },
23          _: String(config.extra?.supportsRTL),
24        },
25      ],
26      config.modResults
27    );
28    return config;
29  });
30};
31
32export default createRunOncePlugin(withExpoLocalization, pkg.name, pkg.version);
33