Diferencia entre revisiones de «Internacionalización»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 4 ediciones intermedias de otro usuario)
Línea 119: Línea 119:
  
  
 +
* Cando queiramos empregar un texto cunha función que non acepte un recurso da clase R de tipo R.string.nome_recurso, deberemos facer uso da función getResources().getString("R.string.nome_recurso") a cal devolvería unha cadea (String) no idioma adecuado.
 +
: A través desta función (getResources()) podemos recuperar, chamando a diferentes métodos, todo tipo de recurso gardado en /res/.
 +
 +
: <u>Nota</u> Tamén se podería empregar directamente a función getString("R.string.nome_recurso").
 +
: Máis información [https://wiki.cifprodolfoucha.es/index.php?title=PDM_Acceso_a_recursos na sección da Wiki de Acceso a Recursos]
 +
 +
 +
 +
<br />
 
*<u>Nota:</u> Lembra que ata o de agora as Acitivities creadas teñen un label 'posto a man' por nos no arquivo '''AndroidManifiest.xml'''.
 
*<u>Nota:</u> Lembra que ata o de agora as Acitivities creadas teñen un label 'posto a man' por nos no arquivo '''AndroidManifiest.xml'''.
 
: Deberían ir referenciadas nun arquivo externo de tipo 'values' => 'string'. Lembra cambialo no teu proxecto (soamente debería levar etiqueta a  nivel de proxecto, non de activity).
 
: Deberían ir referenciadas nun arquivo externo de tipo 'values' => 'string'. Lembra cambialo no teu proxecto (soamente debería levar etiqueta a  nivel de proxecto, non de activity).
−
 
  
  
Línea 136: Línea 144:
 
<u>Nota</u>: a letra r fai referencia á rexión.
 
<u>Nota</u>: a letra r fai referencia á rexión.
  
−
Para facilitarnos o traballo, Eclipse dispón dunha pantalla na que podemos indicar que 'características' queremos que teña o noso arquivo de recursos e automaticamente xa engade por nós os sufixos necesarios.
+
Para facilitarnos o traballo, Android Studio dispón dunha pantalla na que podemos indicar que 'características' queremos que teña o noso arquivo de recursos e automaticamente xa engade por nós os sufixos necesarios.
 +
 
  
−
Cando creamos un arquivo de recursos aparece a seguinte pantalla:
+
<gallery caption="Creando un novo arquivo de recursos" widths="350" heights="300px" perrow="2">
 +
Image:PDM_Internacio_5.jpg| Prememos o botón dereito sobre o cartafol /res/ ou /res/values/. Se o facemos sobre /res/ aparecerá unha combo extra na que teremos que escoller o tipo 'values'.
 +
Image:PDM_Internacio_5b.jpg| Debemos pasar a 'propiedade' SIZE dende a lista da esquerda á dereita (premendo o botón coa dirección dereita)
 +
Image:PDM_Internacio_6.jpg| Neste exemplo estamos a crear un recurso de tipo layout para pantallas de 7-10 pulgadas (tamaño x-large), entón teríamos que crear un layout nun cartafol ‘layout-xlarge’. Ó facelo, podedes observar como na parte baixa aparece o nome co sufixo correcto. Ademais crearase un cartafol físico có dito sufixo.
 +
Image:PDM_Internacio_7.jpg| Podemos combinar varias propiedades no mesmo arquivo. No exemplo, soamente se cargarán as entradas definidas no arquivo xml cando o dispositivo sexa x-large, o idioma estea configurado como español y o dispositivo teña unha orientación horizontal. Fixarse que o sufixo (e por tanto o cartafol a nivel de S.O.) será: -es-xlarge-land
 +
</gallery>
  
−
[[Archivo:Android_2013_U2_41_Internacional_04.jpg|300px|thumb|left]]
 
  
−
<div style="clear:both;">
 
  
−
Se prememos o botón 'Next' pasamos á pantalla comentada anteriormente. Neste exemplo estamos a crear un recurso de tipo layout para pantallas de 7-10 pulgadas (tamaño x-large), entón teríamos que crear un layout nun cartafol ‘layout-xlarge’:
 
  
−
[[Archivo:Android_2013_U2_41_Internacional_05.jpg|300px|thumb|left]]
+
*Na versión '''Lollipop''' (API 21, android 5.0) xa se inclúe o idioma galego.
  
−
* Debemos pasar a 'propiedade' SIZE dende a lista da esquerda á dereita (premendo o botón coa dirección dereita). Unha vez pasada debemos darlle un valor, no noso caso x-large.
 
−
* Ó facelo, podedes observar como na parte baixa aparece o nome co sufixo correcto.
 
  
−
<div style="clear:both;">
 
  
−
Podemos combinar moitas máis 'propiedades'. Así, no seguinte exemplo, estamos a crear un arquivo de recursos de tipo 'Values' que se cargará cando utilicemos un dispositivo Android, co idioma Español, nunha pantalla de tipo Small e cunha densidade Media.
 
  
−
[[Archivo:Android_2013_U2_41_Internacional_06.jpg|300px|thumb|left]]
+
* Tamén temos a opción de crear estes arquivos de idiomas directamente nun Editor.
 +
: A través desta ferramenta podemos editar calquera arquivo en /res/values e asociarlle diferentes idiomas graficamente e introducir a súa tradución:
 +
<gallery caption="Creando novos arquivos de idiomas có Translation Editor" widths="350" heights="300px" perrow="2">
 +
Image:PDM_Internacio_1.jpg| Sobre un arquivo xml do cartafol /res/values prememos o botón dereito e escollemos a opción '''Open Translations Editor'''.
 +
Image:PDM_Internacio_2.jpg| Premendo no botón + creamos unha nova entrada no arquivo XML.
 +
Image:PDM_Internacio_3.jpg| Se queremos crear un novo arquivo cun idioma diferente debemos premer o botón '''Add Locale'''.
 +
Image:PDM_Internacio_4.jpg| Unha vez engadido o idioma aparecerá unha nova columna para cada unha das entradas do arquivo. Crearase o arquivo no cartafol do idioma engadido e poderemos indicar si algunha das entradas non ten tradución (<u>opción Untranslatable</u>) có que indicaremos que dita entrada collerá o valor do arquivo default en calquera idioma que esteamos.
 +
</gallery>
  
−
* O sufixo que crea neste caso será: -es-small-mdpi.
 
  
  
−
<div style="clear:both;">
 
  
−
*Na versión '''Lollipop''' (API 21, android 5.0) xa se inclúe o idioma galego.
+
 
 +
<br />
 +
'''[https://wiki.cifprodolfoucha.es/index.php?title=Programaci%C3%B3n_de_dispositivos_m%C3%B3biles#UNIDADE_2:_A_interface_de_usuario. Enlace a la página principal de la UD2]'''
 +
<br />
 +
<br />
 +
'''[https://wiki.cifprodolfoucha.es/index.php?title=Programación_de_dispositivos_móbiles Enlace a la página principal del curso]'''
 +
<br />
 +
 
  
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).

Revisión actual del 12:59 21 nov 2020

Introdución

  • Tamén temos outras formas de personalizar as nosas aplicacións en base a unha serie de sufixos.
  • Se queremos que as cadeas de constantes estean traducidas a varios idiomas, só temos que crear un cartafol novo de nome values-?? onde ?? é o idioma.
  • Para o inglés teriamos /res/values-en, /res/values-es para o español,....
  • O idioma por defecto será o que estea gardado en /res/values.
  • So se deben cambiar os valores das contanstes, os identificadores deben ser os mesmos.


Caso práctico

  • Crear un novo proxecto: U2_41_Internacional
  • Imos en /res/values definimos as cadeas de texto en galego e esas mesmas cadeas as definimos en inglés en /res/values-en.
  • Para probar a aplicación hai que cambiar o idioma do sistema como se viu na Unidade 1.

strings.xml de /res/values

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <string name="app_name">U2_41_Internacional</string>
 5     <string name="action_settings">Settings</string>
 6     <string name="idioma">Esta aplicación, por defecto, está en galego!</string>
 7 	<string name="boton">Preme aquí</string>
 8     <string name="mensaxe_toast">Premeches o botón!</string>
 9     
10 </resources>


strings.xml de /res/values-en

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <string name="app_name">U2_41_Internacional</string>
 5     <string name="action_settings">Settings</string>
 6     <string name="idioma">This app is by default in galician language!</string>
 7     <string name="boton">Click here</string>
 8     <string name="mensaxe_toast">You have clicked on the button!</string>
 9     
10 </resources>

O XML do layout

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:text="@string/idioma" />
11 
12     <Button
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="@string/boton"
16         android:onClick="onBotonClick" />
17     
18     
19 </LinearLayout>
  • Liñas 10 e 15: Agora temos que traballar con constantes, non podemos poñer o texto a lume.

O código Java

 1 package com.example.u2_41_internacional;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.Menu;
 6 import android.view.View;
 7 import android.widget.Toast;
 8 
 9 public class U2_41_Internacional extends Activity {
10 
11 	@Override
12 	protected void onCreate(Bundle savedInstanceState) {
13 		super.onCreate(savedInstanceState);
14 		setContentView(R.layout.activity_u2_41__internacional);
15 	}
16 
17 	@Override
18 	public boolean onCreateOptionsMenu(Menu menu) {
19 		// Inflate the menu; this adds items to the action bar if it is present.
20 		getMenuInflater().inflate(R.menu.u2_41__internacional, menu);
21 		return true;
22 	}
23 
24 	public void onBotonClick(View v) {
25 		Toast.makeText(this, R.string.mensaxe_toast, Toast.LENGTH_SHORT).show();
26 	}
27 }
  • Liña 25 observar como o toast tamén colle a cadea de texto dos recursos tipo string.

Consideracións a ter en conta

  • Cando queiramos empregar un texto cunha función que non acepte un recurso da clase R de tipo R.string.nome_recurso, deberemos facer uso da función getResources().getString("R.string.nome_recurso") a cal devolvería unha cadea (String) no idioma adecuado.
A través desta función (getResources()) podemos recuperar, chamando a diferentes métodos, todo tipo de recurso gardado en /res/.
Nota Tamén se podería empregar directamente a función getString("R.string.nome_recurso").
Máis información na sección da Wiki de Acceso a Recursos



  • Nota: Lembra que ata o de agora as Acitivities creadas teñen un label 'posto a man' por nos no arquivo AndroidManifiest.xml.
Deberían ir referenciadas nun arquivo externo de tipo 'values' => 'string'. Lembra cambialo no teu proxecto (soamente debería levar etiqueta a nivel de proxecto, non de activity).


Estes sufixos que estamos a utilizar (-land; -es) poden ser combinados entre eles e con outros moitos diferentes.

No seguinte enlace aparece dita orde de prefixos.

Por exemplo:

  • res/values-en-rUS/strings.xml
  • res/values-en-rUK/strings.xml

Onde o segundo sufixo fai referencia a inglés ‘americano’ (en-rUS) ou ‘ inglés’ do Reino Unido (en-rUK).

Nota: a letra r fai referencia á rexión.

Para facilitarnos o traballo, Android Studio dispón dunha pantalla na que podemos indicar que 'características' queremos que teña o noso arquivo de recursos e automaticamente xa engade por nós os sufixos necesarios.




  • Na versión Lollipop (API 21, android 5.0) xa se inclúe o idioma galego.



  • Tamén temos a opción de crear estes arquivos de idiomas directamente nun Editor.
A través desta ferramenta podemos editar calquera arquivo en /res/values e asociarlle diferentes idiomas graficamente e introducir a súa tradución:




Enlace a la página principal de la UD2

Enlace a la página principal del curso



-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).