@nativescript-community/l
Version:
Native internationalization plugin for NativeScript using native capabilities of each platform
97 lines • 4.92 kB
JavaScript
;
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