AI 150370: Add localized content infrastructure in droiddoc templates, javascript, and css. DocFile.java - instead of FileReader, use InputStreamReader with UTF-8 encoding. ClearPage.java - add UTF-8 output encoding to FileOutputStreamWriter. Note: this change also up-integrates gerrit 2146 (smain).

BUG=1910893

Automated import of CL 150370
This commit is contained in:
Dirk Dougherty 2009-07-07 17:43:27 -07:00 committed by Dirk Dougherty
parent 9e202af99c
commit 233bc0b84a
7 changed files with 99 additions and 54 deletions

View file

@ -126,7 +126,7 @@ public class ClearPage
OutputStreamWriter stream = null; OutputStreamWriter stream = null;
try { try {
stream = new OutputStreamWriter( stream = new OutputStreamWriter(
new FileOutputStream(file)); new FileOutputStream(file), "UTF-8");
String rendered = cs.render(); String rendered = cs.render();
stream.write(rendered, 0, rendered.length()); stream.write(rendered, 0, rendered.length());
} }

View file

@ -33,7 +33,8 @@ public class DocFile
try { try {
File f = new File(filename); File f = new File(filename);
int length = (int)f.length(); int length = (int)f.length();
FileReader reader = new FileReader(f); FileInputStream is = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(is, "UTF-8");
char[] buf = new char[length]; char[] buf = new char[length];
int index = 0; int index = 0;
int amt; int amt;

View file

@ -11,12 +11,12 @@ def:default_search_box() ?>
<table class="gsc-search-box" cellpadding="0" cellspacing="0"><tbody> <table class="gsc-search-box" cellpadding="0" cellspacing="0"><tbody>
<tr> <tr>
<td class="gsc-input"> <td class="gsc-input">
<input id="search_autocomplete" class="gsc-input" type="text" size="33" autocomplete="off" <input id="search_autocomplete" class="gsc-input" type="text" size="33" autocomplete="off"
title="search developer docs" name="q" title="search developer docs" name="q"
value="search developer docs" value="search developer docs"
onFocus="search_focus_changed(this, true)" onFocus="search_focus_changed(this, true)"
onBlur="search_focus_changed(this, false)" onBlur="search_focus_changed(this, false)"
onkeydown="return search_changed(event, true, '<?cs var:toroot?>')" onkeydown="return search_changed(event, true, '<?cs var:toroot?>')"
onkeyup="return search_changed(event, false, '<?cs var:toroot?>')" /> onkeyup="return search_changed(event, false, '<?cs var:toroot?>')" />
<div id="search_filtered_div" class="no-display"> <div id="search_filtered_div" class="no-display">
<table id="search_filtered" cellspacing=0> <table id="search_filtered" cellspacing=0>
@ -46,19 +46,29 @@ def:custom_masthead() ?>
</div> </div>
<div id="headerRight"> <div id="headerRight">
<div id="headerLinks"> <div id="headerLinks">
<!-- <img src="<?cs var:toroot ?>assets/images/icon_world.jpg" alt="" /> --> <?cs if:template.showLanguageMenu ?>
<img src="<?cs var:toroot ?>assets/images/icon_world.jpg" alt="" />
<span id="language"> <span id="language">
<select name="language" onChange="changeLangPref(this.value)"> <select name="language" onChange="changeLangPref(this.value, true)">
<option value="en">English</option> <option value="en">English&nbsp;&nbsp;&nbsp;</option>
<!-- <option value="ja"></option> --> <option value="ja"></option>
</select> <?cs #
<script type="text/javascript"> <option value="de">Deutsch</option>
<!-- <option value="es">Español</option>
loadLangPref(); <option value="fr">Français</option>
//--> <option value="it">Italiano</option>
</script> <option value="zh-CN"> ()</option>
</span> <option value="zh-TW"> ()</option>
<a href="http://www.android.com">Android.com</a> ?>
</select>
<script type="text/javascript">
<!--
loadLangPref();
//-->
</script>
</span>
<?cs /if ?>
<a href="http://www.android.com">Android.com</a>
</div><?cs </div><?cs
call:default_search_box() ?> call:default_search_box() ?>
</div><!-- headerRight --> </div><!-- headerRight -->
@ -151,9 +161,8 @@ def:default_left_nav() ?>
if (!isMobile) { if (!isMobile) {
$("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav"); $("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
chooseDefaultNav(); chooseDefaultNav();
if ($("#nav-tree").is(':visible')) { if ($("#nav-tree").is(':visible')) init_navtree("nav-tree", "<?cs var:toroot ?>", NAVTREE_DATA);
init_default_navtree("<?cs var:toroot ?>"); else {
} else {
addLoadEvent(function() { addLoadEvent(function() {
scrollIntoView("packages-nav"); scrollIntoView("packages-nav");
scrollIntoView("classes-nav"); scrollIntoView("classes-nav");

View file

@ -9,27 +9,47 @@
<li id="home-link"><a href="<?cs var:toroot ?><?cs if:android.whichdoc != "online" ?>offline.html<?cs else ?>index.html<?cs /if ?>"> <li id="home-link"><a href="<?cs var:toroot ?><?cs if:android.whichdoc != "online" ?>offline.html<?cs else ?>index.html<?cs /if ?>">
<span class="en">Home</span> <span class="en">Home</span>
<span class="ja"></span> <span class="de">Startseite</span>
<span class="ja"></span>
<span class="zh-CN"></span>
<span class="zh-TW"></span>
</a></li> </a></li>
<li id="sdk-link"><a href="<?cs var:toroot ?>sdk/<?cs var:sdk.current ?>/index.html"> <li id="sdk-link"><a href="<?cs var:toroot ?>sdk/<?cs var:sdk.current ?>/index.html">
<span class="en">SDK</span> <span class="en">SDK</span>
<span class="ja"></span>
</a></li> </a></li>
<li id="guide-link"><a href="<?cs var:toroot ?>guide/index.html" onClick="return loadLast('guide')"> <li id="guide-link"><a href="<?cs var:toroot ?>guide/index.html" onClick="return loadLast('guide')">
<span class="en">Dev Guide</span> <span class="en">Dev Guide</span>
<span class="ja"></span> <span class="de">Handbuch</span>
<span class="es">Guía</span>
<span class="fr">Guide</span>
<span class="it">Guida</span>
<span class="ja"></span>
<span class="zh-CN"></span>
<span class="zh-TW"></span>
</a></li> </a></li>
<li id="reference-link"><a href="<?cs var:toroot ?>reference/packages.html" onClick="return loadLast('reference')"> <li id="reference-link"><a href="<?cs var:toroot ?>reference/packages.html" onClick="return loadLast('reference')">
<span class="en">Reference</span> <span class="en">Reference</span>
<span class="ja"></span> <span class="de">Referenz</span>
<span class="es">Referencia</span>
<span class="fr">Référence</span>
<span class="it">Riferimento</span>
<span class="ja"></span>
<span class="zh-CN"></span>
<span class="zh-TW"></span>
</a></li> </a></li>
<li><a href="http://android-developers.blogspot.com"> <li><a href="http://android-developers.blogspot.com">
<span class="en">Blog</span> <span class="en">Blog</span>
<span class="ja"></span> <span class="ja"></span>
<span class="zh-CN"></span>
<span class="zh-TW"></span>
</a></li> </a></li>
<li id="community-link"><a href="<?cs var:toroot ?>community/index.html"> <li id="community-link"><a href="<?cs var:toroot ?>community/index.html">
<span class="en">Community</span> <span class="en">Community</span>
<span class="ja"></span> <span class="es">Comunidad</span>
<span class="fr">Communauté</span>
<span class="ja"></span>
<span class="zh-CN"></span>
<span class="zh-TW"></span>
</a></li> </a></li>
</ul> </ul>

View file

@ -238,6 +238,10 @@ hr.blue {
top:7px; top:7px;
} }
#header li a span+span {
display:none;
}
/* TAB HIGHLIGHTING */ /* TAB HIGHLIGHTING */
.home #home-link a, .home #home-link a,
.publish #publish-link a, .publish #publish-link a,
@ -276,8 +280,12 @@ hr.blue {
color: #7FA9B5; color: #7FA9B5;
} }
#headerLinks img {
vertical-align:middle;
}
#language { #language {
margin:0 10px; margin:0 10px 0 4px;
} }
#search { #search {

View file

@ -89,6 +89,10 @@
zoom:1; zoom:1;
} }
#side-nav li a span+span {
display:none;
}
#side-nav li a:hover { #side-nav li a:hover {
text-decoration:underline; text-decoration:underline;
} }
@ -1130,9 +1134,9 @@ body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body
page-break-inside: avoid; page-break-inside: avoid;
} }
#qv, /* #qv,
#qv-wrapper { #qv-wrapper {
display:none; display:none;
} }
*/
} }

View file

@ -31,15 +31,6 @@ if ((agent.indexOf("Mobile") != -1) ||
addLoadEvent(mobileSetup); addLoadEvent(mobileSetup);
} }
/* loads the lists.js file to the page.
Loading this in the head was slowing page load time */
addLoadEvent( function() {
var lists = document.createElement("script");
lists.setAttribute("type","text/javascript");
lists.setAttribute("src", toRoot+"reference/lists.js");
$("head").append($(lists));
} );
window.onresize = resizeAll; window.onresize = resizeAll;
function mobileSetup() { function mobileSetup() {
@ -214,6 +205,19 @@ function resizeAll() {
} }
} }
function getBaseUri(uri) {
intlUrl = uri.substring(0,6) == "/intl/";
if (intlUrl) {
base = uri.substring(uri.indexOf('intl/')+5,uri.length);
base = base.substring(base.indexOf('/')+1, base.length);
//alert("intl, returning base url: /" + base);
return ("/" + base);
} else {
//alert("not intl, returning uri as found.");
return uri;
}
}
function loadLast(cookiePath) { function loadLast(cookiePath) {
var location = window.location.href; var location = window.location.href;
if (location.indexOf("/"+cookiePath+"/") != -1) { if (location.indexOf("/"+cookiePath+"/") != -1) {
@ -228,7 +232,7 @@ function loadLast(cookiePath) {
} }
$(window).unload(function(){ $(window).unload(function(){
var path = location.pathname; var path = getBaseUri(location.pathname);
if (path.indexOf("/reference/") != -1) { if (path.indexOf("/reference/") != -1) {
writeCookie("lastpage", path, "reference", null); writeCookie("lastpage", path, "reference", null);
} else if (path.indexOf("/guide/") != -1) { } else if (path.indexOf("/guide/") != -1) {
@ -236,8 +240,6 @@ $(window).unload(function(){
} }
}); });
function toggle(obj, slide) { function toggle(obj, slide) {
var ul = $("ul", obj); var ul = $("ul", obj);
var li = ul.parent(); var li = ul.parent();
@ -258,8 +260,6 @@ function toggle(obj, slide) {
} }
} }
function buildToggleLists() { function buildToggleLists() {
$(".toggle-list").each( $(".toggle-list").each(
function(i) { function(i) {
@ -291,11 +291,11 @@ function swapNav() {
nav_pref = NAV_PREF_PANELS; nav_pref = NAV_PREF_PANELS;
} else { } else {
nav_pref = NAV_PREF_TREE; nav_pref = NAV_PREF_TREE;
init_default_navtree(toRoot); init_navtree("nav-tree", toRoot, NAVTREE_DATA);
} }
var date = new Date(); var date = new Date();
date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
writeCookie("nav", nav_pref, null, date.toGMTString()); writeCookie("nav", nav_pref, "reference", date.toGMTString());
$("#nav-panels").toggle(); $("#nav-panels").toggle();
$("#panel-link").toggle(); $("#panel-link").toggle();
@ -396,12 +396,16 @@ function changeDocLang(lang) {
changeNavLang(lang); changeNavLang(lang);
} }
function changeLangPref(lang) { function changeLangPref(lang, refresh) {
var date = new Date(); var date = new Date();
date.setTime(date.getTime()+(50*365*24*60*60*1000)); // keep this for 50 years expires = date.toGMTString(date.setTime(date.getTime()+(10*365*24*60*60*1000))); // keep this for 50 years
writeCookie("pref_lang", lang, null, date); //alert("expires: " + expires)
writeCookie("pref_lang", lang, null, expires);
changeDocLang(lang); //changeDocLang(lang);
if (refresh) {
l = getBaseUri(location.pathname);
window.location = l;
}
} }
function loadLangPref() { function loadLangPref() {
@ -414,4 +418,3 @@ function loadLangPref() {
function getLangPref() { function getLangPref() {
return $("#language").find(":selected").attr("value"); return $("#language").find(":selected").attr("value");
} }