mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-23 10:07:19 +00:00
Add experimental support for RTL languages
This commit permits language plugins to carry the field “text-direction” with the value “rtl” to trigger right-to-left layout of the entire page. We also adjust the sidebar layout to work in RTL mode. There are still a number of problems to be addressed: * Brackets and other punctuation incorrectly placed within en-GB UI text * System tiddler titles are rendered semi-back-to-front (eg `languages/ca-ES/:$`) Starting to address #1845 and the discussion in #2523.
This commit is contained in:
parent
12e3e8b489
commit
e20bce5450
@ -18,12 +18,14 @@ wiki: wiki store to be used
|
|||||||
pluginType: type of plugin to be switched
|
pluginType: type of plugin to be switched
|
||||||
controllerTitle: title of tiddler used to control switching of this resource
|
controllerTitle: title of tiddler used to control switching of this resource
|
||||||
defaultPlugins: array of default plugins to be used if nominated plugin isn't found
|
defaultPlugins: array of default plugins to be used if nominated plugin isn't found
|
||||||
|
onSwitch: callback when plugin is switched (single parameter is array of plugin titles)
|
||||||
*/
|
*/
|
||||||
function PluginSwitcher(options) {
|
function PluginSwitcher(options) {
|
||||||
this.wiki = options.wiki;
|
this.wiki = options.wiki;
|
||||||
this.pluginType = options.pluginType;
|
this.pluginType = options.pluginType;
|
||||||
this.controllerTitle = options.controllerTitle;
|
this.controllerTitle = options.controllerTitle;
|
||||||
this.defaultPlugins = options.defaultPlugins || [];
|
this.defaultPlugins = options.defaultPlugins || [];
|
||||||
|
this.onSwitch = options.onSwitch;
|
||||||
// Switch to the current plugin
|
// Switch to the current plugin
|
||||||
this.switchPlugins();
|
this.switchPlugins();
|
||||||
// Listen for changes to the selected plugin
|
// Listen for changes to the selected plugin
|
||||||
@ -64,6 +66,10 @@ PluginSwitcher.prototype.switchPlugins = function() {
|
|||||||
var registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);
|
var registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);
|
||||||
// Unpack the current theme tiddlers
|
// Unpack the current theme tiddlers
|
||||||
$tw.wiki.unpackPluginTiddlers();
|
$tw.wiki.unpackPluginTiddlers();
|
||||||
|
// Call the switch handler
|
||||||
|
if(this.onSwitch) {
|
||||||
|
this.onSwitch(plugins);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.PluginSwitcher = PluginSwitcher;
|
exports.PluginSwitcher = PluginSwitcher;
|
||||||
|
@ -63,7 +63,18 @@ exports.startup = function() {
|
|||||||
controllerTitle: "$:/language",
|
controllerTitle: "$:/language",
|
||||||
defaultPlugins: [
|
defaultPlugins: [
|
||||||
"$:/languages/en-US"
|
"$:/languages/en-US"
|
||||||
]
|
],
|
||||||
|
onSwitch: function(plugins) {
|
||||||
|
if($tw.browser) {
|
||||||
|
console.log("switching language",plugins)
|
||||||
|
var pluginTiddler = $tw.wiki.getTiddler(plugins[0]);
|
||||||
|
if(pluginTiddler) {
|
||||||
|
document.documentElement.setAttribute("dir",pluginTiddler.getFieldString("text-direction") || "auto");
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute("dir");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
// Kick off the theme manager
|
// Kick off the theme manager
|
||||||
$tw.themeManager = new $tw.PluginSwitcher({
|
$tw.themeManager = new $tw.PluginSwitcher({
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
"plugin-type": "language",
|
"plugin-type": "language",
|
||||||
"description": "Hebrew (Israel)",
|
"description": "Hebrew (Israel)",
|
||||||
"author": "DoronTzur",
|
"author": "DoronTzur",
|
||||||
"core-version": ">=5.0.0"
|
"core-version": ">=5.0.0",
|
||||||
|
"text-direction": "rtl"
|
||||||
}
|
}
|
@ -690,6 +690,11 @@ button.tc-untagged-label {
|
|||||||
padding: 71px 0 28px 42px;
|
padding: 71px 0 28px 42px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] .tc-sidebar-scrollable {
|
||||||
|
left: auto;
|
||||||
|
right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
|
||||||
|
}
|
||||||
|
|
||||||
.tc-story-river {
|
.tc-story-river {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
|
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
|
||||||
|
Loading…
Reference in New Issue
Block a user