Allow to overwrite a single language string via the theme folder

This commit is contained in:
Joas Schilling 2016-02-26 13:56:02 +01:00
parent 5718402277
commit 78570a5f72
2 changed files with 32 additions and 7 deletions

View File

@ -66,13 +66,21 @@ OC.L10N = {
* @param {Function|String} [pluralForm] optional plural function or plural string * @param {Function|String} [pluralForm] optional plural function or plural string
*/ */
register: function(appName, bundle, pluralForm) { register: function(appName, bundle, pluralForm) {
this._bundles[appName] = bundle || {}; var self = this;
if (_.isUndefined(this._bundles[appName])) {
this._bundles[appName] = bundle || {};
if (_.isFunction(pluralForm)) { if (_.isFunction(pluralForm)) {
this._pluralFunctions[appName] = pluralForm; this._pluralFunctions[appName] = pluralForm;
} else {
// generate plural function based on form
this._pluralFunctions[appName] = this._generatePluralFunction(pluralForm);
}
} else { } else {
// generate plural function based on form // Theme overwriting the default language
this._pluralFunctions[appName] = this._generatePluralFunction(pluralForm); _.each(bundle, function(translation, key) {
self._bundles[appName][key] = translation
});
} }
}, },

View File

@ -31,8 +31,24 @@ class JSResourceLocator extends ResourceLocator {
public function doFind($script) { public function doFind($script) {
$theme_dir = 'themes/'.$this->theme.'/'; $theme_dir = 'themes/'.$this->theme.'/';
if (strpos($script, '3rdparty') === 0 if (strpos($script, '3rdparty') === 0
&& $this->appendIfExist($this->thirdpartyroot, $script.'.js') && $this->appendIfExist($this->thirdpartyroot, $script.'.js')) {
|| $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js') return;
}
if (strpos($script, '/l10n/') !== false) {
// For language files we try to load them all, so themes can overwrite
// single l10n strings without having to translate all of them.
$found = 0;
$found += $this->appendIfExist($this->serverroot, 'core/'.$script.'.js');
$found += $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js');
$found += $this->appendIfExist($this->serverroot, $script.'.js');
$found += $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js');
$found += $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js');
if ($found) {
return;
}
} else if ($this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js') || $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js')
|| $this->appendIfExist($this->serverroot, $script.'.js') || $this->appendIfExist($this->serverroot, $script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js') || $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js')
@ -40,6 +56,7 @@ class JSResourceLocator extends ResourceLocator {
) { ) {
return; return;
} }
$app = substr($script, 0, strpos($script, '/')); $app = substr($script, 0, strpos($script, '/'));
$script = substr($script, strpos($script, '/')+1); $script = substr($script, strpos($script, '/')+1);
$app_path = \OC_App::getAppPath($app); $app_path = \OC_App::getAppPath($app);