mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-14 18:51:28 +00:00
port bug 181541 (Add UI to set default languages for web pages, r=mconnor) to the trunk
This commit is contained in:
parent
c5e993c9fd
commit
b3c3e97627
447
browser/components/prefwindow/content/pref-languages.js
Normal file
447
browser/components/prefwindow/content/pref-languages.js
Normal file
@ -0,0 +1,447 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2000
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Adrian Havill <havill@redhat.com>
|
||||
* Steffen Wilberg <steffen.wilberg@web.de>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
//GLOBALS
|
||||
|
||||
//locale bundles
|
||||
var gRegionsBundle;
|
||||
var gLanguagesBundle;
|
||||
var gAcceptedBundle;
|
||||
var gPrefLangBundle;
|
||||
|
||||
//dictionary of all supported locales
|
||||
var gAvailLanguageDict;
|
||||
|
||||
//XUL listbox handles
|
||||
var gAvailableLanguages;
|
||||
var gActiveLanguages;
|
||||
|
||||
// label and accesskey of the available_languages menulist
|
||||
var gSelectLabel;
|
||||
var gSelectAccesskey;
|
||||
|
||||
//XUL window pref window interface object
|
||||
var gPrefString = new String();
|
||||
|
||||
//Reg expression for splitting multiple pref values
|
||||
var gSeparatorRe = /\s*,\s*/;
|
||||
|
||||
// PrefWindow
|
||||
var gPrefWindow;
|
||||
|
||||
|
||||
function Init()
|
||||
{
|
||||
gRegionsBundle = document.getElementById("bundle_regions");
|
||||
gLanguagesBundle = document.getElementById("bundle_languages");
|
||||
gPrefLangBundle = document.getElementById("bundle_prefLang");
|
||||
gAcceptedBundle = document.getElementById("bundle_accepted");
|
||||
ReadAvailableLanguages();
|
||||
|
||||
try {
|
||||
window.opener.top.initPanel(window.location.href, window);
|
||||
}
|
||||
catch(ex) { } //pref service backup
|
||||
|
||||
gActiveLanguages = document.getElementById("active_languages");
|
||||
gPrefString = gActiveLanguages.getAttribute("prefvalue");
|
||||
LoadActiveLanguages();
|
||||
|
||||
gPrefWindow = window.opener.parent.hPrefWindow;
|
||||
gAvailableLanguages = document.getElementById("available_languages");
|
||||
SelectLanguage();
|
||||
|
||||
LoadAvailableLanguages();
|
||||
gSelectLabel = gAvailableLanguages.getAttribute("label");
|
||||
gSelectAccesskey = gAvailableLanguages.getAttribute("accesskey");
|
||||
}
|
||||
|
||||
|
||||
function onLanguagesDialogOK()
|
||||
{
|
||||
gPrefWindow.wsm.savePageData(window.location.href, window);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function ReadAvailableLanguages()
|
||||
{
|
||||
gAvailLanguageDict = new Array();
|
||||
var visible = new String();
|
||||
var str = new String();
|
||||
var i =0;
|
||||
|
||||
var gAcceptedBundleEnum = gAcceptedBundle.stringBundle.getSimpleEnumeration();
|
||||
|
||||
var curItem;
|
||||
var stringName;
|
||||
var stringNameProperty;
|
||||
|
||||
while (gAcceptedBundleEnum.hasMoreElements()) {
|
||||
|
||||
//progress through the bundle
|
||||
curItem = gAcceptedBundleEnum.getNext();
|
||||
|
||||
//"unpack" the item, nsIPropertyElement is now partially scriptable
|
||||
curItem = curItem.QueryInterface(Components.interfaces.nsIPropertyElement);
|
||||
|
||||
//dump string name (key)
|
||||
stringName = curItem.key;
|
||||
stringNameProperty = stringName.split(".");
|
||||
|
||||
if (stringNameProperty[1] == "accept") {
|
||||
|
||||
//dump the UI string (value)
|
||||
visible = curItem.value;
|
||||
|
||||
//if (visible == "true") {
|
||||
|
||||
str = stringNameProperty[0];
|
||||
var stringLangRegion = stringNameProperty[0].split("-");
|
||||
|
||||
if (stringLangRegion[0]) {
|
||||
var tit;
|
||||
var language;
|
||||
var region;
|
||||
var use_region_format = false;
|
||||
|
||||
try {
|
||||
language = gLanguagesBundle.getString(stringLangRegion[0]);
|
||||
}
|
||||
catch (ex) {
|
||||
language = "";
|
||||
}
|
||||
|
||||
if (stringLangRegion.length > 1) {
|
||||
|
||||
try {
|
||||
region = gRegionsBundle.getString(stringLangRegion[1]);
|
||||
use_region_format = true;
|
||||
}
|
||||
catch (ex) { }
|
||||
}
|
||||
|
||||
if (use_region_format) {
|
||||
tit = gPrefLangBundle.stringBundle.formatStringFromName("languageRegionCodeFormat",
|
||||
[language, region, str], 3);
|
||||
} else {
|
||||
tit = gPrefLangBundle.stringBundle.formatStringFromName("languageCodeFormat",
|
||||
[language, str], 2);
|
||||
}
|
||||
|
||||
} //if language
|
||||
|
||||
if (str && tit) {
|
||||
|
||||
gAvailLanguageDict[i] = new Array(3);
|
||||
gAvailLanguageDict[i][0] = tit;
|
||||
gAvailLanguageDict[i][1] = str;
|
||||
gAvailLanguageDict[i][2] = visible;
|
||||
i++;
|
||||
|
||||
} // if str && tit
|
||||
//} //if visible
|
||||
} //if accepted
|
||||
} //while
|
||||
gAvailLanguageDict.sort( // sort on first element
|
||||
function (a, b) {
|
||||
if (a[0] < b[0]) return -1;
|
||||
if (a[0] > b[0]) return 1;
|
||||
return 0;
|
||||
});
|
||||
} //ReadAvailableLanguages
|
||||
|
||||
|
||||
function LoadAvailableLanguages()
|
||||
{
|
||||
if (gAvailLanguageDict)
|
||||
for (var i = 0; i < gAvailLanguageDict.length; i++)
|
||||
if (gAvailLanguageDict[i][2] == "true")
|
||||
AddMenuOrListItem(document, gAvailableLanguages.menupopup, "menuitem", gAvailLanguageDict[i][1], gAvailLanguageDict[i][0]);
|
||||
}
|
||||
|
||||
|
||||
function LoadActiveLanguages()
|
||||
{
|
||||
if (gPrefString) {
|
||||
var arrayOfPrefs = gPrefString.split(gSeparatorRe);
|
||||
|
||||
for (var i = 0; i < arrayOfPrefs.length; i++) {
|
||||
var str = arrayOfPrefs[i];
|
||||
var tit = GetLanguageTitle(str);
|
||||
|
||||
if (str) {
|
||||
if (!tit)
|
||||
tit = "[" + str + "]";
|
||||
AddMenuOrListItem(document, gActiveLanguages, "listitem", str, tit);
|
||||
} //if
|
||||
} //for
|
||||
} //if
|
||||
}
|
||||
|
||||
|
||||
function LangAlreadyActive(langId)
|
||||
{
|
||||
var found = false;
|
||||
try {
|
||||
var arrayOfPrefs = gPrefString.split(gSeparatorRe);
|
||||
|
||||
if (arrayOfPrefs)
|
||||
for (var i = 0; i < arrayOfPrefs.length; i++) {
|
||||
if (arrayOfPrefs[i] == langId) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
catch(ex){
|
||||
return false;
|
||||
}
|
||||
} //LangAlreadyActive
|
||||
|
||||
|
||||
function SelectAvailableLanguage()
|
||||
{
|
||||
var selItem = gAvailableLanguages.selectedItem;
|
||||
var languageId = selItem.getAttribute("id");
|
||||
var addButton = document.getElementById("add");
|
||||
|
||||
// since we're not displaying "select" anymore, don't underline some random "s"
|
||||
gAvailableLanguages.removeAttribute("accesskey");
|
||||
|
||||
// if the langauge is not already active, activate the "add" button
|
||||
if (!LangAlreadyActive(languageId))
|
||||
addButton.disabled = false;
|
||||
else
|
||||
addButton.disabled = true;
|
||||
}
|
||||
|
||||
function AddAvailableLanguage()
|
||||
{
|
||||
var selItem = gAvailableLanguages.selectedItem;
|
||||
var languageId = selItem.getAttribute("id");
|
||||
var languageName = selItem.getAttribute("label");
|
||||
var addButton = document.getElementById("add");
|
||||
|
||||
if (!LangAlreadyActive(languageId))
|
||||
AddMenuOrListItem(document, gActiveLanguages, "listitem", languageId, languageName);
|
||||
|
||||
// restore the "select" label and accesskey, disable the "add" button again
|
||||
gAvailableLanguages.setAttribute("label", gSelectLabel);
|
||||
gAvailableLanguages.setAttribute("accesskey", gSelectAccesskey);
|
||||
addButton.disabled = true;
|
||||
|
||||
// select the item we just added in the active_languages listbox
|
||||
var lastItem = gActiveLanguages.lastChild;
|
||||
gActiveLanguages.selectItem(lastItem);
|
||||
gActiveLanguages.ensureElementIsVisible(lastItem);
|
||||
|
||||
UpdateSavePrefString();
|
||||
}
|
||||
|
||||
|
||||
function RemoveActiveLanguage()
|
||||
{
|
||||
var nextNode = null;
|
||||
var numSelected = gActiveLanguages.selectedItems.length;
|
||||
var deleted_all = false;
|
||||
|
||||
while (gActiveLanguages.selectedItems.length > 0) {
|
||||
var selectedNode = gActiveLanguages.selectedItems[0];
|
||||
|
||||
nextNode = selectedNode.nextSibling;
|
||||
if (!nextNode && selectedNode.previousSibling)
|
||||
nextNode = selectedNode.previousSibling;
|
||||
|
||||
gActiveLanguages.removeChild(selectedNode);
|
||||
} //while
|
||||
|
||||
if (nextNode)
|
||||
gActiveLanguages.selectItem(nextNode)
|
||||
|
||||
UpdateSavePrefString();
|
||||
}
|
||||
|
||||
|
||||
function GetLanguageTitle(id)
|
||||
{
|
||||
|
||||
if (gAvailLanguageDict)
|
||||
for (var j = 0; j < gAvailLanguageDict.length; j++) {
|
||||
|
||||
if ( gAvailLanguageDict[j][1] == id) {
|
||||
//title =
|
||||
return gAvailLanguageDict[j][0];
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
function AddMenuOrListItem(doc, listbox, type, langID, langTitle)
|
||||
{
|
||||
try { //let's beef up our error handling for languages without label / title
|
||||
|
||||
// Create a listitem for the new Language
|
||||
var item = doc.createElement(type);
|
||||
|
||||
// Copy over the attributes
|
||||
item.setAttribute("label", langTitle);
|
||||
item.setAttribute("id", langID);
|
||||
listbox.appendChild(item);
|
||||
|
||||
}
|
||||
catch (ex) { }
|
||||
}
|
||||
|
||||
|
||||
function UpdateSavePrefString()
|
||||
{
|
||||
var num_languages = 0;
|
||||
gPrefString = "";
|
||||
|
||||
for (var item = gActiveLanguages.firstChild; item != null; item = item.nextSibling) {
|
||||
|
||||
var languageId = item.getAttribute("id");
|
||||
|
||||
if (languageId.length > 1) {
|
||||
num_languages++;
|
||||
|
||||
//separate >1 languages by commas
|
||||
if (num_languages > 1) {
|
||||
gPrefString = gPrefString + "," + " " + languageId;
|
||||
} else {
|
||||
gPrefString = languageId;
|
||||
} //if
|
||||
} //if
|
||||
}//for
|
||||
|
||||
gActiveLanguages.setAttribute("prefvalue", gPrefString);
|
||||
}
|
||||
|
||||
|
||||
function MoveUp() {
|
||||
|
||||
if (gActiveLanguages.selectedItems.length == 1) {
|
||||
var selected = gActiveLanguages.selectedItems[0];
|
||||
var before = selected.previousSibling
|
||||
if (before) {
|
||||
before.parentNode.insertBefore(selected, before);
|
||||
gActiveLanguages.selectItem(selected);
|
||||
gActiveLanguages.ensureElementIsVisible(selected);
|
||||
}
|
||||
}
|
||||
|
||||
if (gActiveLanguages.selectedIndex == 0)
|
||||
{
|
||||
// selected item is first
|
||||
var moveUp = document.getElementById("up");
|
||||
moveUp.disabled = true;
|
||||
}
|
||||
|
||||
if (gActiveLanguages.childNodes.length > 1)
|
||||
{
|
||||
// more than one item so we can move selected item back down
|
||||
var moveDown = document.getElementById("down");
|
||||
moveDown.disabled = false;
|
||||
}
|
||||
|
||||
UpdateSavePrefString();
|
||||
} //MoveUp
|
||||
|
||||
|
||||
function MoveDown() {
|
||||
|
||||
if (gActiveLanguages.selectedItems.length == 1) {
|
||||
var selected = gActiveLanguages.selectedItems[0];
|
||||
if (selected.nextSibling) {
|
||||
if (selected.nextSibling.nextSibling) {
|
||||
gActiveLanguages.insertBefore(selected, selected.nextSibling.nextSibling);
|
||||
}
|
||||
else {
|
||||
gActiveLanguages.appendChild(selected);
|
||||
}
|
||||
gActiveLanguages.selectItem(selected);
|
||||
}
|
||||
}
|
||||
|
||||
if (gActiveLanguages.selectedIndex == gActiveLanguages.childNodes.length - 1)
|
||||
{
|
||||
// selected item is last
|
||||
var moveDown = document.getElementById("down");
|
||||
moveDown.disabled = true;
|
||||
}
|
||||
|
||||
if (gActiveLanguages.childNodes.length > 1)
|
||||
{
|
||||
// more than one item so we can move selected item back up
|
||||
var moveUp = document.getElementById("up");
|
||||
moveUp.disabled = false;
|
||||
}
|
||||
|
||||
UpdateSavePrefString();
|
||||
|
||||
} //MoveDown
|
||||
|
||||
|
||||
function SelectLanguage() {
|
||||
if (gActiveLanguages.selectedItems.length) {
|
||||
document.getElementById("remove").disabled = false;
|
||||
|
||||
var selected = gActiveLanguages.selectedItems[0];
|
||||
document.getElementById("down").disabled = !selected.nextSibling;
|
||||
document.getElementById("up").disabled = !selected.previousSibling;
|
||||
}
|
||||
else {
|
||||
document.getElementById("remove").disabled = true;
|
||||
document.getElementById("down").disabled = true;
|
||||
document.getElementById("up").disabled = true;
|
||||
}
|
||||
|
||||
if (gPrefWindow.getPrefIsLocked(document.getElementById("up").getAttribute("prefstring")))
|
||||
document.getElementById("up").disabled = true;
|
||||
if (gPrefWindow.getPrefIsLocked(document.getElementById("down").getAttribute("prefstring")))
|
||||
document.getElementById("down").disabled = true;
|
||||
if (gPrefWindow.getPrefIsLocked(document.getElementById("remove").getAttribute("prefstring")))
|
||||
document.getElementById("remove").disabled = true;
|
||||
if (gPrefWindow.getPrefIsLocked(gAvailableLanguages.getAttribute("prefstring")))
|
||||
gAvailableLanguages.disabled = true; // the "add" button just stays disabled
|
||||
} // SelectLanguage
|
126
browser/components/prefwindow/content/pref-languages.xul
Normal file
126
browser/components/prefwindow/content/pref-languages.xul
Normal file
@ -0,0 +1,126 @@
|
||||
<?xml version="1.0"?> <!-- -*- Mode: SGML; indent-tabs-mode: nil; -*- -->
|
||||
<!--
|
||||
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is mozilla.org Code.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Netscape Communications Corporation.
|
||||
Portions created by the Initial Developer are Copyright (C) 1999
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Steffen Wilberg <steffen.wilberg@web.de>
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
|
||||
***** END LICENSE BLOCK ***** -->
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://browser/locale/pref/pref-languages.dtd" >
|
||||
|
||||
<dialog id="Languages"
|
||||
title="&languages.customize.Header;"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
style="width: 0px; height: 0px;" onload="Init();"
|
||||
ondialogaccept="return onLanguagesDialogOK(event);"
|
||||
persist="screenX screenY width height">
|
||||
|
||||
<script type="application/x-javascript" src="chrome://browser/content/pref/pref-languages.js"/>
|
||||
<script type="application/x-javascript">
|
||||
<![CDATA[
|
||||
var _elementIDs = ["active_languages", "DefaultCharsetList"];
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(null, "charsetmenu-selected", "other");
|
||||
]]>
|
||||
</script>
|
||||
|
||||
<stringbundleset id="languageSet">
|
||||
<stringbundle id="bundle_regions" src="chrome://global/locale/regionNames.properties"/>
|
||||
<stringbundle id="bundle_languages" src="chrome://global/locale/languageNames.properties"/>
|
||||
<stringbundle id="bundle_prefLang" src="chrome://browser/locale/pref/pref-languages.properties"/>
|
||||
<stringbundle id="bundle_accepted" src="resource://gre/res/language.properties"/>
|
||||
</stringbundleset>
|
||||
|
||||
<groupbox flex="1">
|
||||
<caption label="&languages.customize.label;"/>
|
||||
<description>&languages.customize.prefLangDescript;</description>
|
||||
<description>&languages.customize.active.label;</description>
|
||||
<hbox flex="1">
|
||||
<vbox flex="1">
|
||||
<listbox id="active_languages" flex="1"
|
||||
preftype="localizedstring" prefstring="intl.accept_languages"
|
||||
prefvalue="" prefattribute="prefvalue" wsm_attributes="prefvalue"
|
||||
seltype="multiple" onselect="SelectLanguage();"/>
|
||||
<spacer/>
|
||||
<label accesskey="&languages.customize.selectLanguage.accesskey;" control="available_languages"/>
|
||||
<menulist id="available_languages" oncommand="SelectAvailableLanguage();"
|
||||
label="&languages.customize.selectLanguage.label;"
|
||||
accesskey="&languages.customize.selectLanguage.accesskey;"
|
||||
prefstring="pref.browser.language.disable_addLanguages">
|
||||
<menupopup/>
|
||||
</menulist>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<button id="up" class="up" oncommand="MoveUp();" disabled="true"
|
||||
label="&languages.customize.moveUp.label;"
|
||||
accesskey="&languages.customize.moveUp.accesskey;"
|
||||
prefstring="pref.browser.language.disable_button.up"/>
|
||||
<button id="down" class="down" oncommand="MoveDown();" disabled="true"
|
||||
label="&languages.customize.moveDown.label;"
|
||||
accesskey="&languages.customize.moveDown.accesskey;"
|
||||
prefstring="pref.browser.language.disable_button.down"/>
|
||||
<button id="remove" oncommand="RemoveActiveLanguage();" disabled="true"
|
||||
label="&languages.customize.deleteButton.label;"
|
||||
accesskey="&languages.customize.deleteButton.accesskey;"
|
||||
prefstring="pref.browser.language.disable_button.remove"/>
|
||||
<spacer flex="1"/>
|
||||
<button id="add" oncommand="AddAvailableLanguage();" disabled="true"
|
||||
label="&languages.customize.addButton.label;"
|
||||
accesskey="&languages.customize.addButton.accesskey;"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<groupbox align="start">
|
||||
<caption label="&languages.customize.Charset.grouplabel;"/>
|
||||
<hbox align="center">
|
||||
<label value="&languages.customize.DefaultCharset.label;"
|
||||
accesskey="&languages.customize.DefaultCharset.accesskey;"
|
||||
control="DefaultCharsetList"/>
|
||||
<menulist id="DefaultCharsetList" ref="NC:DecodersRoot" datasources="rdf:charset-menu"
|
||||
prefstring="intl.charset.default" preftype="localizedstring"
|
||||
wsm_attributes="value">
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem label="rdf:http://home.netscape.com/NC-rdf#Name" value="..." uri="..."/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
</dialog>
|
||||
|
@ -242,3 +242,8 @@ function checkNow()
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
function showLanguages()
|
||||
{
|
||||
openDialog("chrome://browser/content/pref/pref-languages.xul", "", "modal,centerscreen,resizable");
|
||||
}
|
||||
|
@ -86,14 +86,24 @@
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&fonts.label;"/>
|
||||
<caption label="&fonts.caption;"/>
|
||||
<hbox align="center">
|
||||
<description flex="1">&fontsInfo.label;</description>
|
||||
<button label="&showFontsAndColors.label;"
|
||||
accesskey="&showFontsAndColors.accesskey;"
|
||||
oncommand="showFontsAndColors();"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&languages.caption;"/>
|
||||
<hbox align="center">
|
||||
<description flex="1">&languagesInfo.label;</description>
|
||||
<button label="&showLanguages.label;"
|
||||
accesskey="&showLanguages.accesskey;"
|
||||
oncommand="showLanguages();"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
#ifdef HAVE_SHELL_SERVICE
|
||||
<groupbox orient="horizontal" id="defaultBrowserPrefs">
|
||||
|
@ -12,6 +12,8 @@ browser.jar:
|
||||
* content/browser/pref/pref-features.js (content/pref-features.js)
|
||||
* content/browser/pref/pref-fonts.xul (content/pref-fonts.xul)
|
||||
* content/browser/pref/pref-fonts.js (content/pref-fonts.js)
|
||||
* content/browser/pref/pref-languages.xul (content/pref-languages.xul)
|
||||
* content/browser/pref/pref-languages.js (content/pref-languages.js)
|
||||
* content/browser/pref/pref-navigator.js (content/pref-navigator.js)
|
||||
* content/browser/pref/pref-calibrate-screen.xul (content/pref-calibrate-screen.xul)
|
||||
* content/browser/pref/pref-navigator.xul (content/pref-navigator.xul)
|
||||
|
19
browser/locales/en-US/chrome/browser/pref/pref-languages.dtd
Normal file
19
browser/locales/en-US/chrome/browser/pref/pref-languages.dtd
Normal file
@ -0,0 +1,19 @@
|
||||
<!-- LOCALIZATION NOTE : 'Languages' preferences dialog -->
|
||||
<!ENTITY languages.customize.Header "Languages and Character Encoding">
|
||||
<!ENTITY languages.customize.label "Languages">
|
||||
<!ENTITY languages.customize.prefLangDescript "Web pages are sometimes offered in more than one language. Choose languages for displaying these web pages, in order of preference.">
|
||||
<!ENTITY languages.customize.active.label "Languages in order of preference:">
|
||||
<!ENTITY languages.customize.Charset.grouplabel "Character Encoding">
|
||||
<!ENTITY languages.customize.DefaultCharset.label "Default Character Encoding:">
|
||||
<!ENTITY languages.customize.DefaultCharset.accesskey "C">
|
||||
<!ENTITY languages.customize.moveUp.label "Move Up">
|
||||
<!ENTITY languages.customize.moveUp.accesskey "U">
|
||||
<!ENTITY languages.customize.moveDown.label "Move Down">
|
||||
<!ENTITY languages.customize.moveDown.accesskey "D">
|
||||
<!ENTITY languages.customize.deleteButton.label "Remove">
|
||||
<!ENTITY languages.customize.deleteButton.accesskey "R">
|
||||
<!ENTITY languages.customize.selectLanguage.label "Select a language to add...">
|
||||
<!ENTITY languages.customize.selectLanguage.accesskey "S">
|
||||
<!ENTITY languages.customize.addButton.label "Add">
|
||||
<!ENTITY languages.customize.addButton.accesskey "A">
|
||||
|
@ -0,0 +1,7 @@
|
||||
# LOCALIZATION NOTE: Next two strings are for language name representations with
|
||||
# and without the region.
|
||||
# e.g. languageRegionCodeFormat : "French/Canada [fr-ca]" languageCodeFormat : "French [fr]"
|
||||
# %1$S = language name, %2$S = region name, %3$S = language-region code
|
||||
languageRegionCodeFormat=%1$S/%2$S [%3$S]
|
||||
# %1$S = language name, %2$S = language-region code
|
||||
languageCodeFormat=%1$S [%2$S]
|
@ -18,18 +18,18 @@
|
||||
<!-- XXXben oh please, can we do better than this text-wise? -->
|
||||
<!ENTITY showConnections.label "Connection Settings...">
|
||||
<!ENTITY showConnections.accesskey "o">
|
||||
|
||||
<!ENTITY proxiesInfo.label "Set up Proxies for accessing the internet.">
|
||||
<!ENTITY connectionsInfo.caption "Connection">
|
||||
|
||||
<!-- XXXben can we do better than this text-wise? -->
|
||||
<!ENTITY fonts.label "Fonts & Colors">
|
||||
<!ENTITY fontsInfo.caption "Fonts & Colors Settings">
|
||||
<!ENTITY fontsInfo.label "Select default Fonts and Colors used when displaying pages.">
|
||||
|
||||
<!ENTITY fonts.caption "Fonts & Colors">
|
||||
<!ENTITY fontsInfo.label "Select default Fonts and Colors for web pages.">
|
||||
<!ENTITY showFontsAndColors.label "Fonts & Colors...">
|
||||
<!ENTITY showFontsAndColors.accesskey "f">
|
||||
<!ENTITY showFontsAndColors.accesskey "F">
|
||||
|
||||
<!ENTITY languages.caption "Languages">
|
||||
<!ENTITY languagesInfo.label "Select default Languages and Character Encoding for web pages.">
|
||||
<!ENTITY showLanguages.label "Languages...">
|
||||
<!ENTITY showLanguages.accesskey "L">
|
||||
|
||||
<!ENTITY checkForDefault.label "&brandShortName; should check to see if it is the default browser when starting.">
|
||||
<!ENTITY checkForDefault.accesskey "d">
|
||||
|
@ -38,6 +38,8 @@
|
||||
locale/browser/pref/pref-features.dtd (@AB_CD@/chrome/browser/pref/pref-features.dtd)
|
||||
locale/browser/pref/pref-features-images.dtd (@AB_CD@/chrome/browser/pref/pref-features-images.dtd)
|
||||
locale/browser/pref/pref-fonts.dtd (@AB_CD@/chrome/browser/pref/pref-fonts.dtd)
|
||||
locale/browser/pref/pref-languages.dtd (@AB_CD@/chrome/browser/pref/pref-languages.dtd)
|
||||
locale/browser/pref/pref-languages.properties (@AB_CD@/chrome/browser/pref/pref-languages.properties)
|
||||
locale/browser/pref/pref-navigator.dtd (@AB_CD@/chrome/browser/pref/pref-navigator.dtd)
|
||||
locale/browser/pref/pref-privacy.dtd (@AB_CD@/chrome/browser/pref/pref-privacy.dtd)
|
||||
locale/browser/pref/pref-themes.dtd (@AB_CD@/chrome/browser/pref/pref-themes.dtd)
|
||||
|
Loading…
Reference in New Issue
Block a user