mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-20 17:32:15 +03:00
11e9904ff3
refs #5345, refs #3801 - Blog localisation - default is `en` (English) - you can change the language code in the admin panel, see https://github.com/TryGhost/Ghost-Admin/pull/703 - blog behaviour changes depending on the language e.g. date helper format - theme translation get's loaded if available depending on the language setting - falls back to english if not available - Theme translation - complete automatic translation of Ghost's frontend for site visitors (themes, etc.), to quickly deploy a site in a non-English language - added {{t}} and {{lang}} helper - no backend or admin panel translations (!) - easily readable translation keys - very simple translation - server restart required when adding new language files or changing existing files in the theme - no language code validation for now (will be added soon) - a full theme translation requires to translate Ghost core templates (e.g. subscriber form) - when activating a different theme, theme translations are auto re-loaded - when switching language of blog, theme translations are auto re-loaded - Bump gscan to version 1.3.0 to support more known helpers **Documentation can be found at https://themes.ghost.org/v1.20.0/docs/i18n.**
50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
var should = require('should'), // jshint ignore:line
|
|
path = require('path'),
|
|
fs = require('fs-extra'),
|
|
extract = require('extract-zip'),
|
|
fsLib = require('../../../../server/lib/fs');
|
|
|
|
describe('lib/fs: read csv', function () {
|
|
const symlinkPath = path.join(__dirname, '..', '..', '..', 'utils', 'fixtures', 'themes', 'theme-symlink'),
|
|
folderToSymlink = path.join(__dirname, '..', '..', '..', 'utils', 'fixtures', 'themes', 'casper'),
|
|
zipDestination = path.join(__dirname, '..', '..', '..', 'utils', 'fixtures', 'themes', 'theme-symlink.zip'),
|
|
unzipDestination = path.join(__dirname, '..', '..', '..', 'utils', 'fixtures', 'themes', 'theme-symlink-unzipped');
|
|
|
|
before(function () {
|
|
fs.removeSync(symlinkPath);
|
|
fs.removeSync(zipDestination);
|
|
fs.removeSync(unzipDestination);
|
|
});
|
|
|
|
after(function () {
|
|
fs.removeSync(symlinkPath);
|
|
fs.removeSync(zipDestination);
|
|
fs.removeSync(unzipDestination);
|
|
});
|
|
|
|
it('ensure symlinks work', function (done) {
|
|
fs.symlink(folderToSymlink, symlinkPath);
|
|
|
|
fsLib.zipFolder(symlinkPath, zipDestination, function (err) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
|
|
extract(zipDestination, {dir: unzipDestination}, function (err) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
|
|
fs.readdir(unzipDestination, function (err, files) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
|
|
files.length.should.eql(13);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|