UNPKG

@nativescript-community/l

Version:

Native internationalization plugin for NativeScript using native capabilities of each platform

97 lines 4.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConverterAndroid = void 0; var tslib_1 = require("tslib"); var fs = require("fs"); var path = require("path"); var converter_common_1 = require("./converter.common"); var resource_android_1 = require("./resource.android"); var ConverterAndroid = (function (_super) { tslib_1.__extends(ConverterAndroid, _super); function ConverterAndroid(dataProvider, androidResourcesMigrationService, logger, platformData, projectData) { var _this = _super.call(this, dataProvider, logger, platformData, projectData) || this; if (androidResourcesMigrationService.hasMigrated(projectData.appResourcesDirectoryPath)) { _this.appResourcesDirectoryPath = path.join(_this.appResourcesDirectoryPath, 'src', 'main', 'res'); } return _this; } ConverterAndroid.prototype.cleanObsoleteResourcesFiles = function (resourcesDirectory, languages) { var _this = this; fs.readdirSync(resourcesDirectory) .filter(function (fileName) { var match = /^values-(.+)$/.exec(fileName); if (match) { var actualLanguage = match[1].replace(/^(.+?)-r(.+?)$/, '$1_$2').replace(/^b\+/, '').split('+').join('_'); return !languages.has(actualLanguage) && !languages.has(match[1].replace(/^(.+?)-r(.+?)$/, '$1-$2')); } return false; }) .map(function (fileName) { return path.join(resourcesDirectory, fileName); }) .filter(function (filePath) { return fs.statSync(filePath).isDirectory(); }) .forEach(function (lngResourcesDir) { var resourceFilePath = path.join(lngResourcesDir, 'strings.xml'); _this.removeFileIfExists(resourceFilePath); _this.removeDirectoryIfEmpty(lngResourcesDir); }); return this; }; ConverterAndroid.prototype.createLanguageResourcesFiles = function (language, isDefaultLanguage, i18nEntries) { var languageResourcesDir; var languageArray = language.split('_'); if (languageArray.length > 1 && (languageArray.length > 2 || languageArray[1].length > 2)) { languageResourcesDir = path.join(this.appResourcesDirectoryPath, "values".concat(isDefaultLanguage ? '' : "-b+" + languageArray.join('+'))); } else { languageResourcesDir = path.join(this.appResourcesDirectoryPath, "values".concat(isDefaultLanguage ? '' : "-".concat(languageArray.join('-').replace(/^(.+?)-(.+?)$/, '$1-r$2')))); } this.createDirectoryIfNeeded(languageResourcesDir); var strings = '<?xml version="1.0" encoding="utf-8"?>\n<resources>\n'; this.encodeI18nEntries(i18nEntries).forEach(function (encodedValue, encodedKey) { if (encodedKey.startsWith('android.strings.')) { strings += " <string name=\"".concat(encodedKey.substring(16), "\">").concat(encodedValue, "</string>\n"); } else { strings += " <string name=\"".concat(encodedKey, "\">").concat(encodedValue, "</string>\n"); } }); strings += '</resources>\n'; var resourceFilePath = path.join(languageResourcesDir, 'strings.xml'); this.writeFileSyncIfNeeded(resourceFilePath, strings); return this; }; ConverterAndroid.prototype.encodeI18nEntries = function (i18nEntries, encodedI18nEntries) { if (encodedI18nEntries === void 0) { encodedI18nEntries = new Map(); } var projectData = this.projectData; var appId = projectData.nsConfig.id; i18nEntries.forEach(function (value, key) { var encodedKey = key; var forceWrite = false; if (encodedKey.startsWith('$' + appId)) { encodedKey = encodedKey.substring(appId.length + 2); forceWrite = true; } else if (encodedKey.startsWith('$')) { return; } var encodedValue = (0, resource_android_1.encodeValue)(value); if (encodedKey.startsWith('ios.info.plist.')) { return; } else if (encodedKey === 'app.name') { if (forceWrite || !encodedI18nEntries.has('app_name')) { encodedI18nEntries.set('app_name', encodedValue); encodedI18nEntries.set('title_activity_kimera', encodedValue); } } else { if (forceWrite || !encodedI18nEntries.has(encodedKey)) { encodedI18nEntries.set(encodedKey, encodedValue); } } }); return encodedI18nEntries; }; return ConverterAndroid; }(converter_common_1.ConverterCommon)); exports.ConverterAndroid = ConverterAndroid; //# sourceMappingURL=converter.android.js.map